您好,我将MySQL与NodeJS(https://www.npmjs.com/package/mysql)结合使用>
在节点JS中,我正在使用MomentJS(MomentJS)
我用DATETIME进行插入,这样就得到了日期
incomes.registerdate = this.FechaRegistro.utc().format('YYYY-MM-DDTHH:mm:ss') //2019-11-20 22:02:42
日期正确存储,但是当我在NodeJs中选择行时,日期更改
RowDataPacket { item: '501021', description: 'CLAMP, 2" MUFFLER', price: 13, quantity: 13, rack: 'B-55', status: '1', registerdate: 2019-11-21T04:02:42.000Z, trackingnumber: 'test' }
为什么?我想获得与插入时相同的时间。
NodeJs在本地主机中运行,而MySQL在服务器中(Azure)
更新
我发现了问题。
包mysql(https://www.npmjs.com/package/mysql),强制返回日期类型(TIMESTAMP,DATETIME,DATE),就像对象类型Date()一样,但是当NodeJS使用从MySQL获得的字符串时,它用作本地时间,但是是UTC时间。
在连接中,我们可以选择强制将日期类型返回为字符串
var mysql = require('mysql'), conf = require('./db-conf'), dbOptions = { host : conf.mysql.host, port : conf.mysql.port, user : conf.mysql.user, password : conf.mysql.pass, database : conf.mysql.db, dateStrings:true }, myConn = mysql.createPool(dbOptions); module.exports = myConn;
当我将此选项设置为true时,一切正常,但是如何使NodeJS可以使用UTC中的时间而不是本地时间?>
[嗨,我正在将MySQL与NodeJS一起使用(https://www.npmjs.com/package/mysql)在Node Js中,我正在使用MomentJS(MomentJS),我用DATETIME进行了INSERT操作,我用这种方式获得了日期incomes.registerdate = this ....
最佳实践:
始终将日期时间以UTC格式存储在数据库中。