2016-04-26 76 views
0

我想比較兩列SHIFTA_Start和SHIFTA_End中的兩個日期。
但是每列都包含日期和時間字段,
我只想比較日期,並省略時間。在SQL Server中省略datetime類型的時間

形象datetime數據類型日期和時間:

enter image description here

+0

'CAST'他們到'日期'。 –

+0

哪個版本的SQL Server? 'CAST(... AS AS DATE)'將從2008年開始工作 – Raj

+0

我正在使用mssql 2014! @raj – Vannessa

回答

0

可以CAST他們DATE比較

CAST(SHIFTA_Start AS DATE) , 
CAST(SHIFTA_End AS DATE) 
1

您可以將它們CASTDATE

SELECT 
    CAST(SHIFTA_Start AS DATE), 
    CAST(SHIFTA_End AS DATE) 

如果你不允許CASTDATE由於有SQL Server的較低版本,您可以使用DATEADDDATEDIFF

SELECT 
    DATEADD(DAY, DATEDIFF(DAY, '19000101', SHIFTA_Start), '19000101'), 
    DATEADD(DAY, DATEDIFF(DAY, '19000101', SHIFTA_End), '19000101') 
0

如果您不是大驚小怪的數據類型,最簡單的方法可能是將該值轉換爲DATE數據類型。但是,如果你想保留DATETIME數據類型,但只是展平時間部分,我首選的方法是使用DATEADD & DATEDIFF從一個固定點。

例如爲:

DATEADD(DD, DATEDIFF(DD, 0, DateField), 0) 

這需要時間和0設置DateField之間的天數,然後添加回到日期0有效地去除時間部分。您還可以更改DATEADD和DATEDIFF函數的間隔部分,以將該值平滑到月份或年份。或者在DATEDIFF值中添加一個固定的整數以獲得將來的某個日期(沒有時間)。

例如爲:

DATEADD(DD, DATEDIFF(DD, 0, DateField) + 1, 0) 

將返回相對於DateField明天,但設置爲00:00:00。

相關問題