SELECT DATEDIFF(DAY, CURRENT_TIMESTAMP, DATE_EXPIRE),EMAIL
FROM dbo.[myTable]
WHERE DATEDIFF(DAY, CURRENT_TIMESTAMP, DATE_EXPIRE) BETWEEN 1 AND 10;
一個在那裏我居然主張使用的一些情況。雖然我還是比較喜歡設置明確的界限:
DECLARE @tomorrow DATE = DATEADD(DAY, 1, CURRENT_TIMESTAMP);
SELECT DATEDIFF(DAY, CURRENT_TIMESTAMP, DATE_EXPIRE),EMAIL
FROM dbo.[myTable]
WHERE DATE_EXPIRE >= @tomorrow
AND DATE_EXPIRE < DATEADD(DAY, 10, @tomorrow);
你不應該使用速記數學(如datetime - integer
),因爲,雖然與DATETIME/SMALLDATETIME工作,它如果更改數據類型爲DATE打破, DATETIME2等
對於很多我漫無頭緒的日期範圍查詢:
http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range-queries.aspx
@JonathanDavis不急於,一個更好的答案可能會一起走。 –