cgs*_*ari 1 sql-server-2005 sql-server-2008 sql-server t-sql datetime
选择 dateadd(s, -1, dateadd(month, datediff(month, 0, getdate())+1,0))
当我执行此查询时,它给出了“2012-01-30 23:59:59.000”。我不知道如何将其设为“2012-01-30 23:59:59.997”。如果有人知道,请说。
感谢您!!!
为什么你需要今天的最后一个可能的价值?停止使用BETWEEN
;使用开放式范围更容易(并且更可靠,并且在各种日期/时间数据类型中保持一致):
DECLARE @today SMALLDATETIME;
SET @today = DATEADD(DAY, DATEDIFF(DAY, '20000101', GETDATE()), '20000101');
SELECT ... FROM ...
WHERE date_column >= @today
AND date_column < DATEADD(DAY, 1, @today);
Run Code Online (Sandbox Code Playgroud)
你正在做的问题是数据类型会影响发生的事情。如果基础数据类型是SMALLDATETIME
,则向上取整;如果基础数据类型是DATETIME
or DATETIME2
,则减去一秒不会捕获当天的所有数据。这实际上是我在T-SQL 中最喜欢的幻灯片之一:坏习惯和最佳实践演讲。有关更多详细信息,请阅读以下博客文章:
归档时间: |
|
查看次数: |
1583 次 |
最近记录: |