Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NodeJS中显示的日期与MySQL中的日期不一致,如何修复?_Mysql_Node.js_Angular_Date_Timezone - Fatal编程技术网

NodeJS中显示的日期与MySQL中的日期不一致,如何修复?

NodeJS中显示的日期与MySQL中的日期不一致,如何修复?,mysql,node.js,angular,date,timezone,Mysql,Node.js,Angular,Date,Timezone,我的问题相当简单,但我似乎无法想出一个简单的方法来解决它 我有一个分为三层的应用程序,Angular 2用于前端,NodeJS用于后端,然后MySQL用于持久性 我的问题涉及数据库和后端 我的数据库中有一个表,其中日期以日期格式保存(我知道它不应该被称为时间戳,但这不是重点),通过PHPMyAdmin,我可以可视化以下行: 然后,我的NodeJS脚本与数据库通信,并获得以下结果: 正如你所见,日期受到某种时区的影响。我想知道的是,为了在两个方面都获得相同的结果,最好的解决方案是什么(正确的值

我的问题相当简单,但我似乎无法想出一个简单的方法来解决它

我有一个分为三层的应用程序,Angular 2用于前端,NodeJS用于后端,然后MySQL用于持久性

我的问题涉及数据库和后端

我的数据库中有一个表,其中日期以日期格式保存(我知道它不应该被称为时间戳,但这不是重点),通过PHPMyAdmin,我可以可视化以下行:

然后,我的NodeJS脚本与数据库通信,并获得以下结果:


正如你所见,日期受到某种时区的影响。我想知道的是,为了在两个方面都获得相同的结果,最好的解决方案是什么(正确的值就是您在数据库中看到的值)。

在数据库中保存日期时,最好使用时间戳。
希望它能起作用。

好的,我终于找到了解决办法。我真的不明白它为什么有效,但它确实有效。创建连接池时,添加日期字符串:“date”似乎可以解决问题

下面是一个例子:

var pool      =    mysql.createPool({
    connectionLimit : 100, //important
    host     : 'localhost',
    user     : 'root',
    password : 'root',
    database : 'ohmyhairdb',
    debug    :  false,
    dateStrings: 'date'
});

我不想改变数据库的结构和背后的整体逻辑,但感谢您的建议在我的数据库中选择CURDATE()和CURTIME()时,时间显示正确,因此问题来自后端部分JavaScript日期可以表示为UTC或计算机的本地时间,取决于执行此操作所使用的
日期
方法。MySQL时间可以存储在UTC或MySQL的时区中(取决于列类型),并且始终显示在MySQL的时区中。您需要显示代码,而不仅仅是问题所在。投票结束。请阅读帮助中心提供的信息。谢谢。请注意,您应该以时区不可知的格式(即UTC时间)在MySQL中存储时间戳。我同意您的看法,但在这种情况下,这是一个仅由一个人使用的应用程序。如果我必须适应更广泛的观众的应用,我会考虑使它成为一个真正的时间戳。