【发布时间】:2016-07-22 04:28:36
【问题描述】:
我正在使用 Node.js + Express + MySQL 构建一个 Web 应用程序。在每个表中都有一个 CreatedOn 列,即 Datetime。每当从 Web 应用程序创建记录时,我都会在后端执行 var createdOn = new Date();填充此字段。
当用户打开记录列表页面时,我想默认向他们显示当天(今天)创建的记录。但是,我仍然可以看到昨天创建的记录(仅在昨天而不是在此之前)。在我的数据库中,当我通过 PhpMyAdmin 检查它时,日期时间值保存为 2016-07-21 18:01:22 。
我的 SQL 查询如下所示:
从 MyTable 中选择 col1, col2...coln 其中 DATE(CreatedOn) = DATE(NOW()) 按 TIME(CreatedOn) DESC 排序
当我从这个查询中调试行时,CreatedOn 和 NOW() 的值似乎发生了变化。
在写这个问题的那一刻,它是 2016 年 7 月 22 日,但 DATE(NOW()) 显示它 2016-07-20T18:30:00.000Z 并将 DATE(CreatedOn) 显示为 2016-07-20T18 :30:00.000Z 也是如此。
我需要在数据库中进行一些调整吗?还是我读错了这些值? 谢谢您的帮助。
【问题讨论】:
-
你不需要 date() 函数,因为现在返回一个日期。
-
js 日期时间,服务器日期时间,mysql 日期时间。他们可能在不同的时区。确保它们相同
-
服务器是我的本地主机,数据库由 GoDaddy 托管,它似乎在应用程序中创建时存储了正确的 DateTime。但是,当从数据库中读取它时,它会将其转换为另一个值。