我想比較兩列SHIFTA_Start和SHIFTA_End中的兩個日期。
但是每列都包含日期和時間字段,
我只想比較日期,並省略時間。在SQL Server中省略datetime類型的時間
形象datetime數據類型日期和時間:
我想比較兩列SHIFTA_Start和SHIFTA_End中的兩個日期。
但是每列都包含日期和時間字段,
我只想比較日期,並省略時間。在SQL Server中省略datetime類型的時間
形象datetime數據類型日期和時間:
可以CAST
他們DATE
比較
CAST(SHIFTA_Start AS DATE) ,
CAST(SHIFTA_End AS DATE)
您可以將它們CAST
到DATE
SELECT
CAST(SHIFTA_Start AS DATE),
CAST(SHIFTA_End AS DATE)
如果你不允許CAST
到DATE
由於有SQL Server的較低版本,您可以使用DATEADD
和DATEDIFF
:
SELECT
DATEADD(DAY, DATEDIFF(DAY, '19000101', SHIFTA_Start), '19000101'),
DATEADD(DAY, DATEDIFF(DAY, '19000101', SHIFTA_End), '19000101')
如果您不是大驚小怪的數據類型,最簡單的方法可能是將該值轉換爲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。
'CAST'他們到'日期'。 –
哪個版本的SQL Server? 'CAST(... AS AS DATE)'將從2008年開始工作 – Raj
我正在使用mssql 2014! @raj – Vannessa