2014-05-09 5 views
7

से सीधे प्राप्त करता हूं, जब मैं सीधे MySQL का अनुरोध करता हूं, तो मुझे यूटीसी (मैं MySQL सर्वर में यूटीसी सेट करता हूं) में वापस दिनांक प्राप्त करता हूं, लेकिन नोडजेएस के साथ मुझे यूटीसी + 2 स्थानीय समय क्षेत्र डेटा मिलता है, क्यों ? यूटीसी प्राप्त करने के लिए मैं नोडजेएस कैसे सेट कर सकता हूं?NodeJS ने MySQL टाइमज़ोन का जवाब दिया है जब मैं सीधे MySQL

enter image description here enter image description here

उत्तर

29

मैं जब mysql कनेक्शन

var db_config = { 
    host  : 'localhost', 
    user  : 'xxx', 
    password : '', 
    database : 'xxx', 
    timezone: 'utc' //<-here this line was missing 
}; 
+0

unfortınately यह मेरे लिए समस्या हल नहीं होती , कोई अन्य जवाब? – tuku

+1

यह मेरे लिए काम नहीं करता है, मुझे डर है –

2

आरंभ हालांकि यह एक पुराने सवाल यह है कि index.js में समय-क्षेत्र को शामिल किया है, मैं एक ऐसी ही समस्या थी और config timezone: 'utc' जोड़ने का समाधान नहीं समस्या (यह बदतर हो जाता है)।

मैं जिस समाधान का अंततः उपयोग करता हूं वह कॉन्फ़िगरेशन dateStrings : true जोड़ने के लिए है कि मेरे पास कच्ची स्ट्रिंग तिथि है और MySQL मॉड्यूल स्वयं जावास्क्रिप्ट दिनांक में रूपांतरण नहीं करता है।

फिर मैं एक उपयुक्त जावास्क्रिप्ट ऑब्जेक्ट प्राप्त करने के लिए moment.utc (thedatestring) का उपयोग करता हूं (डेटाबेस में, मैं मेजबान की कॉन्फ़िगरेशन से स्वतंत्र रूप से DATETIME कॉलम में यूटीसी के रूप में सभी तिथियों को सहेजता हूं)। Moment.js का उपयोग करना।

0

तुम भी DATETIME को dateStrings गुण सेट कर सकते हैं।

dateStrings: सेना तारीख प्रकार (TIMESTAMP DATETIME,, DATE) तार बल्कि तो जावास्क्रिप्ट दिनांक वस्तुओं में फुलाया रूप में वापस आ जाना चाहिए। (डिफ़ॉल्ट: गलत)

देखें: https://github.com/mysqljs/mysql#connection-options

2

समय क्षेत्र मूल्य "UTC + 0", वह मेरे लिए काम किया सेट करके देखें।

+0

बहुत बढ़िया। मेरे लिए भी काम किया। धन्यवाद। – user681365

0

बार-बार है कि समस्या को गिरने के बाद मैं वांछित समाधान मिल गया है।

मेरा nodeJS ऐप mySQL डीबी से Sequelize ORM के माध्यम से डेटा लाने वाला ऐप।

सुनिश्चित करें कि टाइमज़ोन हर जगह समान है।

config.js:

const timezone = 'UTC' 
process.env.TZ = timezone 

sequelize_config.js:

const sequelize = new Sequelize(database, user, password, 
    options: { 
    host, 
    dialect: 'mysql', 
    port, 
    timezone: 'UTC', // for writing to database 
    dialectOptions: { 
     useUTC: true, // for reading from database 
    }, 
    } 
} 

आशा है कि यह इस लूप के गिरने से किसी के समय की बचत करेंगे ... :)