【问题标题】:MySql datetime field value is returned incorrectly after queryingMySql datetime 字段值查询后返回错误
【发布时间】: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。但是,当从数据库中读取它时,它会将其转换为另一个值。

标签: mysql date datetime


【解决方案1】:

我有时会遇到一些问题,当我取出记录时会给我不同的结果,但是当我使用 Date_Format 时,它会解决我的问题

Date_Format(date_field,"%Y-%m-%d");

然后在您的日期字段中完成所有操作。 希望对你有帮助..

【讨论】:

  • 是的,结果比较它.. Date_Format 不仅对我有很大帮助。需要考虑的是,日期必须在该格式上始终看起来像“2016-07-22”.. 如果您正在使用它的条件......
  • 刚试了一下,没用:(它仍然显示我昨天创建的记录。
  • 你的 CreatedOn 在数据库中的数据类型是什么,它的内容是什么?
  • 所以我使用的是 GoDaddy 托管的 MySql 数据库,我用于 CreatedOn 的数据类型是日期时间。它以以下格式保存日期时间值:2016-07-21 18:01:22
  • 在您的 GoDaddy 数据库中没有任何问题?我的意思是日期是正确的?只是当你把它拿出来的时候?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
相关资源
最近更新 更多