截断日期仅为小时/分钟

时间:2012-03-20 08:51:34

标签: sql sql-server sql-server-2008 tsql

如何在sql server 2008中截断日期:

我有2012-01-02 12:04:11.443,我只想选择2012-01-02 12:00:00.0002012-01-02 12:04:00.000(小时和分钟级别)

3 个答案:

答案 0 :(得分:39)

declare @D as datetime = '2012-01-02T12:04:11.443'

select dateadd(hour, datediff(hour, 0, @D), 0)
select dateadd(minute, datediff(minute, 0, @D), 0)

答案 1 :(得分:4)

这似乎有效:

select [Rounded Time] =
    dateadd(mi,datediff(mi,0,dateadd(ss,30,a.DT)),0)

from
    (
    select dt = convert(datetime,'8:24:29.997')
    union all
    select dt = convert(datetime,'8:24:30.000')
    ) a

结果:

Rounded Time                                           
------------------------------------------------------ 
1900-01-01 08:24:00.000
1900-01-01 08:25:00.000

(2 row(s) affected)

答案 2 :(得分:0)

我正在使用这样的东西:

DATEADD(hour,DATEDIFF(hour,'2000-01-01 00:00',[timestamp]),'2000-01-01 00:00')

您可以使用此公式截断到其他级别,即分钟:

DATEADD(minutes,DATEDIFF(minutes,'2000-01-01 00:00',[timestamp]),'2000-01-01 00:00')

您必须记住,如果您截断到秒级别,则基准日期与[时间戳]之间的最大差异为68年。