SQL - 将时间设置为明天早上8点

时间:2015-03-07 19:33:22

标签: sql sql-server-2008 tsql

我试图接受12点之后的时间,并将其设置为第二天的上午8点。

我知道如何使用DATEADD为日期添加时间或小时数,但不知道如何在特定时间将其设置为第二天。

尝试使用SQL Server / Transact-SQL。

我能想到这样做的唯一方法是创建一个评估日期的函数,并根据输入将DATEADD返回到小时,以使其达到上午8点。

1 个答案:

答案 0 :(得分:1)

以下内容:

DECLARE @mydate DATETIME = '2015-03-07 16:59:59.997'

SELECT DATEADD(day, 1, DATEADD(day, DATEDIFF(day, 0, @mydate), '08:00:00'))

生成此输出:

2015-03-08 08:00:00.000

如果您还想检查日期时间值是否在12PM之后,那么您可以使用:

SELECT CASE 
          WHEN CAST(@mydate AS TIME) > CAST('12:00:00' AS TIME) THEN 
              DATEADD(day, 1, DATEADD(day, DATEDIFF(day, 0, @mydate), '08:00:00'))
          ELSE 
              @mydate
       END