有没有办法在日期和特定时间范围之间选择记录。例如,2013-11-01至2013-11-30之间的所有记录在05:00至15:00之间。这就是我到现在所做的。
select count(*) as total from tradingaccounts accounts
inner join tradingaccounts_audit audit on audit.parent_id = accounts.id
where date(audit.date_created) between date('2013-11-01 00:00:00') AND date('2013-11-01 23:59:59')
但是我如何设定具体的时间范围呢?
答案 0 :(得分:9)
您可以使用HOUR
功能在小时数上添加其他条件:
select count(*) as total from tradingaccounts accounts
inner join tradingaccounts_audit audit on audit.parent_id = accounts.id
where date(audit.date_created) between date('2013-11-01 00:00:00') AND date('2013-11-01 23:59:59')
AND HOUR (audit.date_created) BETWEEN 5 AND 15
答案 1 :(得分:0)
答案 2 :(得分:0)
在查询中添加以下行并在BETWEEN中设置小时
<00>和'00:00:01'和'01:00:00'之间的时间(audit.date_created)答案 3 :(得分:0)
正如其他人回答的那样,HOUR()
可以帮到你。
但是HOUR()或DATE()不能使用INDEX
。为了更快地进行查询,我建议添加time_created TIME
列并仅保存TIME部分。之后ADD INDEX(date_created, time_created)
。最后通过以下查询,您可以高速检索行。
where audit.date_created between '2013-11-01 00:00:00' AND '2013-11-01 23:59:59'
AND audit.time_created BETWEEN '05:00:00' AND '15:00:00'
答案 4 :(得分:0)
如果使用date(audit.date_created)
,则date_created
字段上的索引将无效。
只需使用where audit.date_created >= 'xx-xx-xx' and audit.date_created < 'xx-xx-xx'