У меня есть ситуация, когда запрос поля datetime2 (7) с помощью GETDATE () - n не возвращает ожидаемый результат.
Запрос с> = GEDATE () - 20 возвращает все даты, кроме 4/27 (если выполняется сегодня 5/17)
Запрос с> = 27.04.2017 возвращает все даты, включая 4/27.
Это как-то связано с timepart? даже если время составляет все 0?
DECLARE @MinDate DATE = '04-01-2018',
@MaxDate DATE = '05-17-2018';
SELECT TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1)
DateCol = CAST(DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate) AS DATETIME2(7))
INTO #temp
FROM sys.all_objects a
CROSS JOIN sys.all_objects b;
--SELECT * FROM #temp
SELECT COUNT(*) FROM #temp WHERE DateCol >= GETDATE()-20
SELECT COUNT(*) FROM #temp WHERE DateCol >= '2018-04-27' --excludes the date 4/27
/*
SELECT * FROM #temp WHERE DateCol >= GETDATE()-20 --Excludes 4/27
SELECT * FROM #temp WHERE DateCol >= '2018-04-27' --Expected output includes 4/27
*/
DROP TABLE #temp