Mysql 大于或小于一个日期在sequelize中不会给出任何记录,但可以与heidisql一起使用
这真的很奇怪,我无法调试这个问题。我也不知道是什么导致了这个问题。Mysql 大于或小于一个日期在sequelize中不会给出任何记录,但可以与heidisql一起使用,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,这真的很奇怪,我无法调试这个问题。我也不知道是什么导致了这个问题。 我有一个问题如下: const sequelize = require('sequelize') const Op = sequelize.Op const TODAY_START = new Date().setHours(0, 0, 0, 0) const NOW = new Date() const data = await AssignedJob.findAll({ where: {
我有一个问题如下:
const sequelize = require('sequelize')
const Op = sequelize.Op
const TODAY_START = new Date().setHours(0, 0, 0, 0)
const NOW = new Date()
const data = await AssignedJob.findAll({
where: {
created_on: {
[Op.gt]: TODAY_START,
[Op.lt]: NOW
}
}
})
它生成一个如下所示的查询
SELECT `id`, `emp_id`, `zone_id`, `job_id`, `status`, `commission`, `rating`,
`created_by`, `updated_by`, `created_on`, `updated_on`
FROM `assigned_jobs` AS `AssignedJob`
WHERE (`AssignedJob`.`created_on` > '2020-03-24 00:00:00' AND `AssignedJob`.`created_on` < '2020-03-24 17:18:15');
选择'id','emp\u id','zone\u id','job\u id','status','commission','rating',',
`创建人','更新人','创建人','更新人'
从'assigned_jobs'改为'assigned Job'
其中(`AssignedJob`.`created_on`>'2020-03-24 00:00:00'和`AssignedJob`.`created_on`<'2020-03-24 17:18:15');
但是数据
只是一个[]
空数组。我也尝试过使用
[Op.between]:[START\u DATE,NOW]
,但仍然没有任何记录。我将相同的查询复制到heidsql并运行它,在那里得到结果。
这里发生了什么事?有人能解释一下吗?
sequelize中创建的
和更新的的数据类型是日期
,在表中是时间戳
使用矩.js格式化'yyyyy-MM-DD HH:MM:ss'中的日期
const sequelize=require('sequelize'))
恒力矩=要求的(‘力矩’);
const Op=sequelize.Op
函数getDate(withoutTime){
const date=新日期();
如果(无时间)日期设置小时数(0,0,0,0);
返回时刻(日期)。格式('YYYY-MM-DD HH:MM:ss');
}
const TODAY_START=getDate(true);/'2020-03-24 00:00:00'
const NOW=getDate();/'2020-03-24 17:47:41'
问题const TODAY\u START=new Date()。设置小时(0,0,0,0)
将导致Unix时间,即1970年1月1日后的秒数
const date=new date().setHours(0,0,0,0)
console.log(日期);//1970年后返回秒
const date1=新日期();
日期1.设定时间(0,0,0,0);
console.log(日期1);//返回日期
我不知道发生这种情况的原因,我找到了解决办法。我必须使用momentjs
来实现这一点。
const moment = require('moment')
const now = moment()
const todayAssignedJobs = await AssignedJob.findAll({
where: {
created_on: {
[Op.gt]: now.startOf('day').toString(),
[Op.lt]: now.endOf('day').toString()
},
status: 1
}
})
仍在生成相同的查询,但它给出的是结果,而不是空数组。
SELECT `id`, `emp_id`, `zone_id`, `job_id`, `status`, `commission`, `rating`, `created_by`, `updated_by`, `created_on`, `updated_on` FROM
`assigned_jobs` AS `AssignedJob`
WHERE
(`AssignedJob`.`created_on` > '2020-03-24 00:00:00' AND `AssignedJob`.`created_on` <'2020-03-24 23:59:59')
AND `AssignedJob`.`status` = 1;
选择'id','emp'u id','zone'u id','job'u id','status','commission','rating','created'u','updated'u','created'u on','updated'u on'FROM
`分配的_作业`作为`分配的作业`
哪里
(`AssignedJob`.`created_on`>'2020-03-24 00:00:00:00'和`AssignedJob`.`created_on`我需要从一天的开始到一天的结束之间的记录。getDateWithoutTime()
将两者转换为同一日期。不,我没有尝试过。如果我必须使用momentjs,我看不出有任何理由编写函数,而不使用它已有的函数。