WHERE子句中的SQL日期和时间

时间:2018-09-04 14:52:33

标签: sql sql-server-2014 dateadd

我需要在声明的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

请指导

2 个答案:

答案 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);

DBFidde Demo