Mysql Sequelize如何格式化查询中的Sequelize.literal(';当前时间戳';)?
我一直在尝试将日期(Mysql Sequelize如何格式化查询中的Sequelize.literal(';当前时间戳';)?,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,我一直在尝试将日期(yyyy-mm-dd)与sequelize.literal('CURRENT\u TIMESTAMP')进行比较,如下所示: dataagendado: { [Op.gte]: sequelize.literal('CURRENT_TIMESTAMP') } 当dataagendado的值等于今天的日期时,这适用于大于的情况,但不。我认为我需要格式化当前时间戳数据。我一直在试图找到答案,但我得到的只是创建列时的格式设置,这似乎不适用于SELECT查询。我还尝试了se
yyyy-mm-dd
)与sequelize.literal('CURRENT\u TIMESTAMP')
进行比较,如下所示:
dataagendado: {
[Op.gte]: sequelize.literal('CURRENT_TIMESTAMP')
}
当dataagendado
的值等于今天的日期时,这适用于大于的情况,但不。我认为我需要格式化当前时间戳
数据。我一直在试图找到答案,但我得到的只是创建列时的格式设置,这似乎不适用于SELECT查询。我还尝试了sequelize.fn('NOW')
并格式化它,但没有成功
我走对了吗?非常感谢您的帮助。免责声明:我假设您正在使用Postgres作为基础数据库。如果不是这样,请发布您的数据库引擎 您正在使用
sequelize.literal('CURRENT_TIMESTAMP')
,它在Postgres中解析为NOW()
。NOW()
函数返回当前时间的时间戳。如果您将没有时间戳的日期与时间戳不起作用的日期进行比较
您可以使用以下内容:
dataagendado: {
[Op.gte]: sequelize.literal('now()::Date')
}
dataagendado: {
[Op.lte]: sequelize.literal('CURDATE()')
}
在SQL中,会发生以下情况:
SELECT NOW()
=>2021-03-31T07:39:24.518Z
SELECT NOW()::Date
=>2021-03-31T00:00:00.000Z
多亏了staaar的回答,我获得了足够的洞察力,意识到我应该在数据库文档中寻找函数,而不是在Sequelize的文档或线程中。我使用MySql作为数据库,因此我应该使用的当前日期函数如下所示:
dataagendado: {
[Op.gte]: sequelize.literal('now()::Date')
}
dataagendado: {
[Op.lte]: sequelize.literal('CURDATE()')
}
,可能在数据库的文档中查找类似的内容。祝你好运
再次感谢用户staaar 您是否使用Postgres作为基础数据库?不,对不起,我昨天无法确定地验证这一点。我正在使用MySql,但你的回答提供了足够的洞察力,让我自己来理解其余部分,非常感谢!我使用MySql作为数据库,多亏了你的评论,我意识到我误解了sequelize.literal的作用,我本应该通过sequelize来寻找数据库函数,但我一直在寻找解决方案。使用
[Op.lte]:sequelize.literal('CURDATE()')
对我很有效,非常感谢!