2011-08-26 93 views
2

我試圖掙扎圓的日期了,說:圓了一個DATETIME到午夜

2011-08-26 11:33:21.653 

要:

2011-08-26 23:59:59.999 

它只需要四捨五入到午夜,減一微秒。我能找到的所有舍入函數似乎只是整數或浮點值。

回答

2

四捨五入今天的日期到3毫秒午夜前的今天:

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

(或者一列,變量等,代替別的東西CURRENT_TIMESTAMP)

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'