2010-07-07 66 views
5

我想获得一个完整的日期如何添加小时,分钟,秒到dateadd sql?

那么今天将是2010年7月7日上午12:00:00至2010年7月7日下午11:59:59

所以这应该是全自12:00:00起24小时将是当时的第8次。

所以我有这个

select DATEADD(??, ??, DATEDIFF(dd, 0, GETUTCDATE())) 

如何使它添加23小时59mins和59秒呢?

回答

5
DECLARE @start DATETIME 
DECLARE @end DATETIME 

SET @start = DATEADD(dd, 0, DATEDIFF(dd, 0, GETUTCDATE())) 
SET @end = DATEADD(dd, 1, DATEADD(ms, -3, @start)) 
+0

这是否更好?它会遇到这种竞争状态吗? – chobo2 2010-07-08 00:16:36

+0

@ chobo2:这个计算'@ end'与'@ start'相关,而不是通过调用'GETUTCDATE()'a第二次,所以它不容易受到竞争条件的影响,在(不太可能的)事件中,日期在两个报表之间的午夜之间打勾,然后范围仍然是一天。 – LukeH 2010-07-08 06:09:44

3

试试这个:

DATEADD(second, -1, DATEADD(DAY, 1,"7/7/2010 12:00:00"))

+0

嗯,我不能把它硬编码,当然。所以我拿了你所拥有的东西,并且让它看起来有效,但是我再也不知道我真的做了什么 DATEADD(dd,0,DATEDIFF(dd,0,GETUTCDATE()))和DATEADD(ss,-1 ,DATEDIFF(dd,-1,GETUTCDATE()) – chobo2 2010-07-07 22:35:31

+0

@ chobo2:评论中的代码与竞争条件存在一定的可能性 - 如果日期在第一条语句和第二条语句之间的午夜之间点击,则最终其范围涵盖了两天而不是一个 – LukeH 2010-07-07 22:44:16

相关问题