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
我正在尝试获取时间在中午 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