的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