Pregunta

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?

¿Fue útil?

Solución

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top