【发布时间】:2018-09-14 14:21:42
【问题描述】:
我对 sequelize.js 中的查询有疑问。
在数据库中,我使用myDate 字段存储模型,该字段以UTC 格式存储。我还有一个指定时间段的查询:
AND p.myDate BETWEEN :dateStart AND :dateEnd
使用sequelize.query,我将参数替换为:
dateStart: 2018-09-11T22:00:00.000ZdateEnd: 2018-09-14T14:15:40.609Z
现在的问题是我看到查询正在执行,但是使用 localTime 值:
AND p.myDate BETWEEN '2018-09-12 00:00:00' AND '2018-09-14 16:15:40'
为什么将其转换为当地时间?我找不到正确的答案。
【问题讨论】:
-
一种可能的方式(可能不是最好的方式)将您的时间以纪元格式存储在数据库中,每当您需要在应用程序上显示数据时,只需使用 moment.format()。这样比较 where 子句不会产生任何问题。
-
@getashu1,可能是的,虽然我在 sequelize 库中发现了奇怪的行为,但我想知道它的根本原因。
-
您是否尝试在方言选项中使用时区选项
-
根据docs.sequelizejs.com/class/lib/…,如果没有设置则
default: '+00:00'。
标签: javascript mysql sql mariadb sequelize.js