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不急于,一个更好的答案可能会一起走。 –