2016-07-22 71 views
0

我正在使用Node.js + Express + MySQL构建Web应用程序。在每个表中都有一个CreatedOn列,它是Datetime。无论何时从Web应用程序创建记录,在后端我都会创建var createdOn = new Date();填充这个字段。查询后MySql datetime字段值返回不正确

当用户打开记​​录列表页面时,我想默认显示当天(今天)创建的记录。但是,我仍然可以看到昨天创建的记录(仅在昨天而不是在此之前)。在我的数据库中,当我通过PhpMyAdmin查看时,日期时间值保存为2016-07-21 18:01:22。

我的SQL查询看起来是这样的:

选择COL1,COL2 ...从MyTable的科隆其中date(CreatedOn)= DATE(NOW())ORDER BY TIME(CreatedOn)DESC

当我从这个查询调试行时,它似乎像CreatedOn和NOW()值已更改。

在写这个问题的时候,它是2016年7月22日,但是DATE(NOW())显示它2016-07-20T18:30:00.000Z并且它显示DATE(CreatedOn)为2016-07- 20T18:30:00.000Z。

我需要在数据库中进行一些调整吗?还是我读这些值错了? 感谢您的帮助。

+0

你不需要date()函数,因为现在返回一个日期。 – Jens

+0

js datetime,服务器日期时间,mysql日期时间。他们可能在不同的时区。确保它们是相同的 – SIDU

+0

服务器是我的本地主机,数据库由GoDaddy托管,它似乎在应用程序中创建时存储正确的DateTime。但是,当从数据库中读取它时,它会将其转换为另一个值。 – codeinprogress

回答

0

我得到了一些问题,有时当我拿出记录给我不同的结果,但是当我使用DATE_FORMAT将固定我的问题

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

做整个你的日期字段即可。 希望它有帮助..

+0

那么我是否使用日期格式进行比较? – codeinprogress

+0

是比较它作为结果.. Date_Format不仅帮助我很多一次。需要考虑的东西,日期必须看起来像这样的格式“2016-07-22”总是..如果你使用它在条件 –

+0

刚刚尝试过,没有工作:(它仍然显示我昨天创建的记录 – codeinprogress