2017-09-08 70 views
1

我需要一些SQL查詢的幫助。我有一個SQL Server數據庫中有三個字段的表。 Field1,Field2和DateField。我想計算在給定時間返回多少條記錄,其中Field1與set變量匹配,Field2匹配set變量,並且DateField在同一天(從上午12:00 - 下午23:59 pm的24小時制日期)我們需要日期分組的幫助。任何幫助將不勝感激。簡單的SQL查詢中的日期分組

回答

3

一言以蔽之:

and DateField >= TODAY and DateField < TOMORROW 

明確:

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

您還可以使用BETWEEN,但我更喜歡的獨家上限。如果發現該方法不太容易出錯,例如使用11:59pm作爲結束時間,並將23:59.00123:59.997的記錄保留在沒有家的情況下,或者在明天午夜的記錄上進行匹配。

+0

'和DateField> = TODAY和DateField Horaciux

+1

@Horaciux只有當該字段是一個沒有時間組件的日期類型。在SQL中,如果您將日期與日期時間進行比較,則會將前者轉換爲後者,並將該值與時間是午夜時間進行比較。 –

1

這是你想要的嗎?

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

從上午12:00 - 下午23:59提到'24小時的日子'讓我擔心他實際上有'DateTime'專欄,在這種情況下,這個答案是錯誤的。 –

+0

喬爾是正確的......這是我需要的一種,但它必須是一個確切的日期時間比賽......它不會是......是否有可能將其提取到日期而不是日期時間?我真的不在乎它是在什麼時間設置的......只要它在同一天 – optionsix