Question

We are attempting to strip the time off a DateTime variable:

DECLARE @Date DateTime 

SET @Date = '01Jan2013 23:59:59.998'
PRINT DATEADD(dd, 0, DATEDIFF(dd, 0, @Date ))

SET @Date = '01Jan2013 23:59:59.999'
PRINT DATEADD(dd, 0, DATEDIFF(dd, 0, @Date ))

Result:

Jan 1 2013 12:00AM
Jan 2 2013 12:00AM

Why does 01Jan2013 23:59:59.999 come back as 2nd Jan rather than 1st Jan?

Was it helpful?

Solution

Because there's no .999 and .998 fraction of a second in datetime type. You only have .990, .993 and .997.

So .998 is rounded down to .997, while .999 is rounded up. Read more about the type.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top