我正在使用Laravel 3 - PHP和MySQl。
我需要选择在两个日期(created_at
DATETIME)之间和两次(下午3点到下午6点)之间创建的所有记录。
$query->where_between('created_at', $this->s['start'], $this->s['end']);
如何在当天的下午3点到6点之间添加时间范围?
$this->s['start'] = '2014-2-14';
$this->s['end'] = '2014-2-16';
Timerange:06:00:00和UTC时间09:00:00
日期存储在日期时间,如2014-2-15 06:43:56
记录:
在2014-2-14
和2014-2-17
以及07:00:00
和14:00:00
之间。
*
所选记录
遵循:
$query->raw_where('EXTRACT(HOUR_SECOND from `created_at`) between 070000 and 140000');
更简单的方法吗?
答案 0 :(得分:0)
你为什么不用sql这样做?过滤是SQLs raison d'etre的重要组成部分。实际上,between条款的存在正是出于这个原因:
SELECT pkid from tbl where datetime_field between 7:00:00 and 14:00:00
考虑到数据库本身的限制,我建议尽可能保持过滤尽可能接近数据库。
答案 1 :(得分:-1)
我认为您只需要在请求中添加其他where_between约束:
$query->where_between('created_at', $this->s['start'], $this->s['end'])
->where_between('created_at', '6:00:00', '9:00:00');
没试过,但它应该做的工作!
感谢hd1 for SQL tip。