NodeJS responded MySQL timezone is different when I fetch directly from MySQL

匿名 (未验证) 提交于 2019-12-03 02:52:02

问题:

When I request MySQL directly, I get back date in UTC (I set UTC in MySQL server), but with NodeJS I get UTC+2 local time zone data, why? How can I set NodeJS to get UTC?

回答1:

I have added timezone in index.js when initializing mysql connection

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


回答2:

Although this is an old question, I had a similar problem and adding the config timezone: 'utc' did not solve the problem (it get worse).

The solution I finally used is to add the config dateStrings : true such that I have a raw string date and mysql module does not do itself the conversion to a javascript date.

Then I use moment.utc(thedatestring) to obtain a suitable javascript object (in the database, I save all dates as UTC in DATETIME columns, independently of the configuration of the host). Using Moment.js.



回答3:

Try setting the timezone value to "UTC+0", that worked for me.



回答4:

You can also set the dateStrings property to DATETIME.

dateStrings: Force date types (TIMESTAMP, DATETIME, DATE) to be returned as strings rather then inflated into JavaScript Date objects. (Default: false)

Refer: https://github.com/mysqljs/mysql#connection-options



回答5:

after falling to that problem again and again i've found the desired solution.

My nodeJS app fetching data from mySQL db via Sequelize ORM.

Make sure the timezone is the same everywhere.

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     },   } } 

Hope it will save someone's time from falling to this loop... :)



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!