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

All*_*nde 18 sql t-sql datetime date-arithmetic

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

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

我该怎么做呢?

小智 31

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

select convert(date, getdate())
Run Code Online (Sandbox Code Playgroud)

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

select convert(date, getdate() + 0.5)
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是SqlServer 2005则不行 (6认同)

SQL*_*ace 18

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

select dateadd(dd, datediff(dd, 0, getdate())+0, 0)
Run Code Online (Sandbox Code Playgroud)


ric*_*ent 5

这是另一个解决方案:

SELECT CAST( FLOOR( CAST( GETDATE() AS float) ) AS smalldatetime)
Run Code Online (Sandbox Code Playgroud)