我需要在声明的WHERE子句中使用今天的日期作为今天的晚上11:59。例如如果今天是2018年9月4日,那么我要'09 / 04/2018 23:59'。我尝试了以下操作,但没有成功:
DECLARE @today SMALLDATETIME
SET @today = DATEADD(month, ((YEAR(GETDATE()) - 1900) * 12) + MONTH(GETDATE()) - 1, DAY(GETDATE()) - 1) + ' 23:59:59'
PRINT @today
请指导
答案 0 :(得分:2)
如果愿意,可以使用日期算术进行此操作:
SET @today = dateadd(minute, -1, cast(dateadd(day, 1, cast(getdate() as date)) as smalldatetime));
我担心尝试获取当天的最后一分钟。这表明您可能尝试在日期时间使用between
或<=
。通常最好避免构造并使用<
。
答案 1 :(得分:1)
您可以使用DATETIMEFROMPARTS
:
DECLARE @t DATE = GETDATE();
SELECT DATETIMEFROMPARTS(YEAR(@t),MONTH(@t),DAY(@t),23,59,0,0);