SQL 设置今天凌晨 5 点的虚拟日期

SQL Set a dummy date of Today at 5AM

我有一个显示日期、区域和数量的 table。日期都是空的,但我想为 table 中的所有值设置今天早上 5 点的虚拟 date/time。我希望根据今天的日期将日期部分更改为今天。但是,我希望小时部分始终是凌晨 5 点。

Date Area Qty
Null A    1
Null B    3
Null C    2

所以今天,11 月 5 日,每条记录的日期字段将显示

2018-11-05 05:00:00.000 

如果明天 11 月 6 日记录仍然存在,它将更改为

2018-11-06 05:00:00.000

我怎样才能做到这一点?

您可以使用它来展示,或者每天更新 table:

SELECT DATEADD(HH, 5, CONVERT(DATETIME, CONVERT(date, GETDATE())))

简单

UPDATE YourTable
SET [Date] = (SELECT 
                   CAST(CAST(GetDate() AS DATE) AS DATETIME) + 
                   CAST('05:00:00' AS DATETIME)
             );

如果你需要每天都做这个,你可以每天schedule a job到运行这个查询。

只需在现有日期上加 + 1,它就会增加 1 天

UPDATE YourTable
SET [Date] = [Date] + 1

您可以将该列转换为计算列(毕竟这就是您所描述的内容):

alter table myTable drop column [Date];
alter table myTable add [Date] as 
  cast(cast(getdate() as date) as datetime) + 
  cast('05:00 AM' as datetime);

DBFiddle demo