将DATETIME整理到午夜

时间:2011-08-26 11:49:01

标签: sql sql-server datetime

我正在努力争取约会,说:

 2011-08-26 11:33:21.653

要:

 2011-08-26 23:59:59.999

它只需要整理到午夜,减去一微秒。我能找到的所有舍入函数似乎只是舍入整数或浮点值。

2 个答案:

答案 0 :(得分:2)

将今天的日期舍入到今天午夜之前的3毫秒:

select DATEADD(day,DATEDIFF(day,'20010101',CURRENT_TIMESTAMP),'2001-01-01T23:59:59.997')

(或者对于列,变量等,用其他东西代替CURRENT_TIMESTAMP)

答案 1 :(得分:2)

请注意,日期时间精确到3.33毫秒(1/300)

DATEADD(millisecond, -3, DATEADD(day, DATEDIFF(day, 0, '2011-08-26 11:33:21.653'), 1))

注意,如果这是一个范围查询,那么通常你会这样做:

DateCol >= '20110826' AND DateCol < '20110827'

......不是这些

DateCol >= '20110826' AND DateCol <= '2011-08-26 23:59:59.997'
DateCol BETWEEN '20110826' AND '2011-08-26 23:59:59.997'