繁体   English   中英

T-SQL将日期时间修剪到最近的日期?

[英]T-SQL to trim a datetime to the nearest date?

重复 什么是去除datetime值(SQL Server)的时间部分的最佳方式?

我有一个列来跟踪使用日期时间创建事物的列,但是我想生成一个按日分组的报表,所以我需要一种方法来清空datetime列的时间组件。

我该怎么做呢?

为什么不直接转换为日期:

select convert(date, getdate())

这截断了几天而不是几轮。 圆形天做这个:

select convert(date, getdate() + 0.5)

一种方法是将getdate()更改为列名,

select dateadd(dd, datediff(dd, 0, getdate())+0, 0)

这是另一个解决方案:

SELECT CAST( FLOOR( CAST( GETDATE() AS float) ) AS smalldatetime)

这是从日期时间获取日期(作为字符串)的简单方法:

convert(varchar, <the date field/value/etc>, 101)

但请注意,此字段的排序将按字母顺序排列,而不是按日期排序,因为它现在是一个字符串

是。 有很多格式可供选择,所以我会链接它。

http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm

如果您希望将帖子隐含的时间归零,可以试试这个:

select cast(convert(varchar, getdate(), 101) as datetime)

我只是做演员(getdate()作为日期)

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

我认为它运行得很快,因为它所做的只是四舍五入和铸造。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM