MySQL date_add行为

时间:2013-08-29 16:18:03

标签: mysql

我写了一些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。我尝试了不同的最大日期,它总是将日期返回到当天结束。有人可以解释发生了什么以及如何在我想要的时候让它停止吗?

1 个答案:

答案 0 :(得分:2)

首先想到的是将日期字符串转换为日期格式而不是字符串,例如:

cast('2013-08-05T23:00' as smalldatetime)