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

SQL - set time to tomorrow at 8AM

我正在尝试获取时间在中午 12 点之后的任何日期,并将其设置为第二天上午 8 点。

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

正在尝试使用 SQL 服务器/交易-SQL。

我能想到的唯一方法是创建一个函数,根据输入计算日期和 returns DATEADD 到小时,使其达到上午 8 点。

以下:

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

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

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