如何将日期与SQL Server 2008中的GetDate()进行比较



i有一个存储过程,该过程用于将某种信息插入表'Dobotable',因为我有一个字段logintime,其中数据类型为DateTime。我正在使用getDate()来获取当前的日期时间,问题是我要比较此getDate()是否低于上午9:00,然后将其作为9:00 AM,如果不是较低,请保持输出,因为没有任何东西变化。 - 使用Microsoft SQL Server2008。

以下是我的样本存储过程

         //Beg Stored Procedure Contents...

            insert into dbo.demoTable([loginTime],[nStatus]) values(GETDATE(),'1')
         //End

- 应在2008年及以上工作

选择datePart(小时,getDate())<9然后dateadd(小时,9,cast(getdate(aS)作为日期))else getDate()end

select CASE when DATEPART(HOUR, GETDATE()) < 9 THEN dateadd(hh, 9, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)) ELSE getdate() END

这是我本人的解决方案,感谢@codingyoshi的提示,SQL Server 2008不支持IIF,我们可以使用案例

此查询将检查当前时间是否在上午9:00之前,如果没有,它将保留呼叫getdate()的结果。否则,它将使它成为上午9:00。

select iif(DATEPART(HOUR, GETDATE()) < 9, 
           dateadd(hh, 9,  DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)),
           getdate())

最新更新