0

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

4

1 回答 1

2

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

cast('2013-08-05T23:00' as smalldatetime)
于 2013-08-29T16:23:18.683 回答