2017-09-08 39 views
1

SQLクエリでいくつかの助けが必要です。 3つのフィールドを持つSQLサーバーデータベースにテーブルがあります。 Field1、Field2、およびDateField。私は、Field1がセット変数に一致し、Field2がセット変数に一致し、DateFieldが同じ日にある(午前12時から午後23時59分までの24時間)、返されるレコードの数をカウントしたい。単純なSQLクエリの日付グループ化

select count(*) 
from TableA 
where Field1 = 'A' 
and Field2 = 'B' 
and DateField = TODAY 

私は日付のグループ化について助けが必要です。どんな助けでも感謝します。

答えて

3

and DateField >= cast(current_timestamp as date) and DateField < cast(dateadd(dd, 1, current_timestamp) as date) 

またBETWEENを使用することができますが、私は排他的な上限を好みます。最終的に11:59pmを終了時刻として使用し、家を持たない23:59.001から23:59.997までのレコードを残したり、明日真夜中になるレコードで一致させるなど、そのアプローチが間違いを起こしにくい場合は、

+0

'とDateField> = TODAYとDateField Horaciux

+1

@Horaciuxフィールドが時間コンポーネントを持たない日付タイプの場合のみ。 SQLでは、日付と日付時刻を比較すると、前者を後者に変換し、時刻が真夜中であるかのように値を比較します。 –

1

これはあなたが望むものですか?特に

and DateField >= TODAY and DateField < TOMORROW 

:一言で言えば

select count(*) 
from TableA 
where Field1 = 'A' and Field2 = 'B' and 
     DateField = cast(getdate() as date); 
+0

「24時間から12時〜23時59分」という言葉は、実際には「DateTime」列があることを心配しています。この場合、この回答は間違っています。 –

+0

ジョエルは正しかった...これは私が必要としているもののようなものですが、それは正確な日時の一致でなければなりません...そして、それは...ないでしょう。それは日にちだけでなく日時?私は本当にそれが何時に設定されているか気にしません...同じ日にそれが同じ日に – optionsix

関連する問題