将datetime变量的时间部分设置为18:00

Max*_*akh 12 sql sql-server datetime

我需要将datetime变量设置为两天,但是时间部分必须是18:00.

例如,如果我getdate()现在打电话,我会得到2010-05-17 13:18:07.260.我需要设置它2010-05-19 18:00:00.000.

有没有人有一个很好的片段或任何想法如何正确吗?

Ale*_*lex 20

SELECT DATEADD(hh, 24 * 2 + 18, DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0))
Run Code Online (Sandbox Code Playgroud)

这会截断当前日期,并为其添加2天18小时(24 * 2 + 18).

可能的变化:

SELECT DATEADD(hh, 18, DATEADD(dd, DATEDIFF(dd, -2, GETDATE()), 0))
Run Code Online (Sandbox Code Playgroud)


小智 5

我必须做类似的事情,创建一个程序从前一天的某个时间运行到当天的某个时间这就是我将开始日期设置为前一天的 16:30 所做的,基本上减去了这些部分您不想将它们恢复为 0,然后添加您想要的值。

-- Set Start Date to previous day and set start time to 16:30.00.000

SET @StartDate = GetDate()
SET @StartDate = DateAdd(dd,- 1, @StartDate) 
SET @StartDate = DateAdd(hh,- (DatePart(hh,@StartDate))+16, @StartDate) 
SET @StartDate = DateAdd(mi,- (DatePart(mi,@StartDate))+30, @StartDate) 
SET @StartDate = DateAdd(ss,- (DatePart(ss,@StartDate)), @StartDate) 
SET @StartDate = DateAdd(ms,- (DatePart(ms,@StartDate)), @StartDate) 
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助。