首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 到期提醒功能:一週內到期資料查詢實作

     編輯:關於SqlServer

需求情境

資料表含到期欄位 inTime,需在到期前 7 天內自動列出作為重點提醒。

建立測試資料

CREATE TABLE t (
    id INT,
    name VARCHAR(50),
    inTime DATETIME
);

INSERT INTO t VALUES
(1,'aa','2007-10-21'), (2,'bb','2007-10-22'), (3,'cc','2007-10-23'),
(4,'dd','2007-10-24'), (5,'ee','2007-10-25'), (6,'ff','2007-10-26'),
(7,'gg','2007-10-27'), (8,'hh','2007-10-28'), (9,'ii','2007-10-29'),
(10,'jj','2007-10-30');

核心查詢語句

-- 到期前 7 天 (含當天)
SELECT * FROM t
WHERE DATEDIFF(DAY, GETDATE(), inTime) BETWEEN 0 AND 7;

-- 或寫法 2:日期加減運算
SELECT * FROM t
WHERE inTime >= GETDATE() AND inTime < DATEADD(DAY, 8, GETDATE());

關鍵函數說明

  • GETDATE():取得伺服器目前日期時間。
  • DATEDIFF(DAY, start, end):回傳兩日期相差天數。
  • DATEADD(DAY, n, date):日期加減 n 天。

應用程式整合建議

-- C# 範例 (ADO.NET)
string sql = @"
    SELECT id, name, inTime 
    FROM t 
    WHERE inTime >= @today AND inTime < @limit";
cmd.Parameters.AddWithValue("@today", DateTime.Today);
cmd.Parameters.AddWithValue("@limit", DateTime.Today.AddDays(8));

效能優化

  • 在 inTime 建立非叢集索引,查詢可用 Index Seek。
  • 避免在欄位上運算(如 DATEDIFF(DAY, GETDATE(), inTime)),改用 inTime >= ... AND inTime < ... 保持 SARGable。

延伸:排程自動通知

搭配 SQL Agent Job 每日執行上述查詢,寄送 Email 或寫入通知表,即可完成自動到期提醒系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved