获取日期减1天,但确切的凌晨4点

时间:2015-06-09 11:39:48

标签: sql-server visual-studio-2013

我有以下sql server WHERE子句:

  

WHERE(DateCreated> = CONVERT(datetime,GETDATE(),111) - 1)

这会得到日期(今天是2015-06-09)2015-06-08。我需要为此添加时间,例如24H格式的2015-06-08 04:00:00。每次执行SQL命令时,时间总是相同的蝙蝠,它应该只是从昨天凌晨4点到当前日期和时间。

如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

试试这个:

WHERE DateCreated >= dateadd(d, datediff(d, 1, getdate()), '04:00')

答案 1 :(得分:0)

我认为你在寻找:

WHERE (DateCreated >= DATEADD(HOUR, 4, 
                        CONVERT(datetime, 
                            DATEADD(DAY, -1, CONVERT(date, GETDATE()) )
                               )
                              )
       )

直接转换为DATE将消除照顾小时部分的麻烦。在此之后,使用DATEADD -1将在1天前完成。

完成此步骤后,只需将其转换回日期时间即可创建日期的时间戳部分,默认为00:00:00.000

最后,只需在此开始日期添加4小时,这将始终为您提供凌晨4点。