2010-05-17 39 views
8

我需要将datetime变量设置为从现在开始的两天,但它的时间部分必须是18:00。将日期时间变量的时间部分设置为18:00

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

有没有人有一个很好的片段或任何想法如何做到这一点对吗?

回答

15
SELECT DATEADD(hh, 24 * 2 + 18, DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)) 

这将截断当前日期并将其加上2天18小时(24 * 2 + 18)

的可能变化:

SELECT DATEADD(hh, 18, DATEADD(dd, DATEDIFF(dd, -2, GETDATE()), 0)) 
+0

太棒了,非常感谢。完美的作品。 – 2010-05-17 09:38:40

1
Select DateAdd(hour, 18, DateAdd(day, 2, cast(floor(cast(getdate() as float))as datetime))) 
1

我必须做同样的事情,创建一个特定时间的前一天 这当天运行到一定时间的过程就是我为了将开始日期设置为前一天的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) 

希望这可以帮助别人。

相关问题