我写了一些SQL给我两次之间的日期范围如下:
select date_add(x.min_date, interval ((t500.id-1) * 30) minute) period
from (
select '2013-08-05T23:00' as min_date, '2013-08-06T01:00' as max_date
) x,
t500
where date_add(x.min_date, interval ((t500.id-1) * 30) minute) <= x.max_date);
其中T500是列号为1到500的普通表,我用它来模拟循环。
现在我希望这会回来:
2013-08-05 23:00:00
2013-08-05 23:30:00
2013-08-06 00:00:00
2013-08-06 00:30:00
2013-08-06 01:00:00
并完成那里。但它继续进行到2013-08-06 23:30:00。我尝试了不同的最大日期,它总是将日期返回到当天结束。有人可以解释发生了什么以及如何在我想要的时候让它停止吗?
答案 0 :(得分:2)
首先想到的是将日期字符串转换为日期格式而不是字符串,例如:
cast('2013-08-05T23:00' as smalldatetime)