woo*_*lum 1 sql date sql-server-2008
我正在尝试获取帐户到期之前的剩余天数,因此我可以向用户发送电子邮件通知他们.我有正确的"Where"语句,但我不确定如何选择差异作为整数.到目前为止,我有:
SELECT (DATE_EXPIRE-CURRENT_TIMESTAMP),EMAIL
FROM [myTable]
WHERE (DATE_EXPIRE - CURRENT_TIMESTAMP <= 10) AND (DATE_EXPIRE - CURRENT_TIMESTAMP >= 1)
Run Code Online (Sandbox Code Playgroud)
SELECT DATEDIFF(DAY, CURRENT_TIMESTAMP, DATE_EXPIRE),EMAIL
FROM dbo.[myTable]
WHERE DATEDIFF(DAY, CURRENT_TIMESTAMP, DATE_EXPIRE) BETWEEN 1 AND 10;
Run Code Online (Sandbox Code Playgroud)
我实际上提倡使用BETWEEN的少数情况之一.虽然我还是喜欢设置明确的界限:
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);
Run Code Online (Sandbox Code Playgroud)
您不应该使用速记数学(例如datetime - integer),因为虽然它适用于DATETIME/SMALLDATETIME,但如果您将数据类型更改为DATE,DATETIME2等,它会中断.
对于日期范围查询中的许多我的ramblings:
| 归档时间: |
|
| 查看次数: |
14965 次 |
| 最近记录: |