的What's the BEST way to remove the time portion of a datetime value (SQL Server)?T-SQL將日期時間修剪到最近的日期?
重複我有使用日期時間創建的事情,當一個跟蹤列,但我想生成一個報表,它們分組一天,所以我需要歸零出的一種方式日期時間列的時間組件。
我該怎麼做?
的What's the BEST way to remove the time portion of a datetime value (SQL Server)?T-SQL將日期時間修剪到最近的日期?
重複我有使用日期時間創建的事情,當一個跟蹤列,但我想生成一個報表,它們分組一天,所以我需要歸零出的一種方式日期時間列的時間組件。
我該怎麼做?
一種方法是改變getdate()
你的列名,
select dateadd(dd, datediff(dd, 0, getdate())+0, 0)
是的。有許多格式可供選擇,所以我將鏈接它。
http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm
如果您希望像您的文章意味着零出的時候,你可以試試這個:
select cast(convert(varchar, getdate(), 101) as datetime)
轉換(VARCHAR,日期字段/值/等,101)
這是從日期時間獲取日期的最簡單方法。
declare @CurrentDate datetime
set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0)
- 或 -
select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly
from tblX
在我的搜索我遇到了以下解決方案來了,這條時間僅在UTC時間之外,但我發現它很有趣,所以我認爲別人也會這麼想:
FUNCTION TrimDate(@dt AS DATETIME) RETURNS DATETIME
BEGIN
RETURN CAST(CAST((@dt - 0.500000038580247) AS INT) AS DATETIME)
END
我會認爲它運行得很快,因爲它所做的全部都是四捨五入和投射。
這裏的另一種解決方案:
SELECT CAST(FLOOR(CAST(GETDATE() AS float)) AS smalldatetime)
爲什麼不直接轉換迄今:
select convert(date, getdate())
這截斷天,未發。若要舍入日期,請執行以下操作:
select convert(date, getdate() + 0.5)
convert(datetime,convert(varchar,getdate(),101)) – 2009-02-11 20:11:16
斷開的鏈接。該頁面的新鏈接http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm – monkeypushbutton 2010-04-23 20:07:40