2013-08-29 73 views
0

我已經寫了一些SQL給我一個日期範圍的兩個時間之間,像這樣:MySQL的DATE_ADD行爲

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的列ID我用模擬循環。

現在我希望這個返回:

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進行。我嘗試了不同的最大日期,它總是返回到一天結束的日期。有人可以解釋發生了什麼,以及如何在需要時停止它?

想到的

回答

2

第一件事是您鑄造日期字符串成日期格式,而不是例如一個字符串:

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

沒錯,這固定它,謝謝。 – dwxw

+0

請接受它,如果它也upvote以及 – skv

+0

你必須等待10分鐘才能接受... ;-) – dwxw