10

DateTimecolumnに基づいて選択するクエリを作成しようとしていますSyncDate

いくつかの背景として、私がクエリを実行するテーブルは、毎日まったく同じ時間に何千ものインポートを毎日取得します。「通常の」時刻にインポートされなかったエントリを見つけたい。

したがって、DateTime列の時間が 2 つの時間の間にある場所をクエリしたいと思います。任意の日/月/年の期間で 14:00-14:30 (2-230) としましょう。

SELECT * FROM MyTable
WHERE DatePart(SyncDate, ..?) BETWEEN (14:00..?) and (14:30..?)

このDatePart機能は必要なもののようですが、この状況に適用する方法がわかりません。偉大なクエリアの皆様のご協力に感謝いたします。

編集: 私は間違っていました。バックエンドとして SQL-Server-2005 を実行しています。ごめん!

4

2 に答える 2

28

SQL Server 2008を使用しているため、新しいTIMEデータ型を使用できます。

SELECT * FROM MyTable
WHERE CAST(SyncDate AS TIME) BETWEEN '14:00' and '14:30'

バックエンドがまだ 2008 でない場合:-) 次のようなものが必要です。

SELECT * FROM MyTable
WHERE DATEPART(HOUR, SyncDate) = 14 AND DATEPART(MINUTE, SyncDate) BETWEEN 0 AND 30

14:00 ~ 14:30 の時間を確認します。

于 2012-04-05T20:52:20.770 に答える
2

これはどう....

select * from MyTable where
cast(cast(datepart(HH,SyncDate) as char(2)) + cast(datepart(HH,SyncDate) as char(2)) as int) between 1400 and 1430
于 2012-04-05T20:56:34.030 に答える