select dateadd(s, -1, dateadd(month, datediff(month, 0, getdate())+1,0))
when i execute this query, it gives '2012-01-30 23:59:59.000'. I donno how to get it as '2012-01-30 23:59:59.997'. If anybody Know, please say.
thanking you!!!
datetimesql serversql-server-2005sql-server-2008t-sql
select dateadd(s, -1, dateadd(month, datediff(month, 0, getdate())+1,0))
when i execute this query, it gives '2012-01-30 23:59:59.000'. I donno how to get it as '2012-01-30 23:59:59.997'. If anybody Know, please say.
thanking you!!!
Best Answer
Why on earth do you need the last possible value of today? Stop using
BETWEEN
; it is much easier (and much more reliable, and consistent across various date/time data types) to use an open ended range:The problem with what you're doing is that the data type can affect what happens. If the underlying data type is
SMALLDATETIME
, it rounds up; if the underlying data type isDATETIME
orDATETIME2
, subtracting a second is not going to capture all of the data from that day. This is actually one of my favorite slides in my T-SQL : Bad Habits and Best Practices talk. For a lot more details, please read these blog posts: