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

时间:2018-11-05 19:56:12

标签: sql-server datetime getdate

我有一张表,显示日期,区域和数量。日期全为空,但是我想为表中的所有值设置今天的虚拟日期/时间为凌晨5点。我希望日期部分可以根据今天的日期更改为今天。但是,我希望小时部分始终是凌晨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

我该如何实现?

4 个答案:

答案 0 :(得分:1)

简单

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

如果您每天需要这样做,则可以schedule a job每天运行此查询。

答案 1 :(得分:0)

您可以将其用于显示,也可以与工作一起每天更新表格:

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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