0

私は次のように2つの時間の間の日付の範囲を与えるためにいくつかの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 に答える