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

SQL Server 排程每 30 分鐘自動執行:動態計算時間區間腳本

     編輯:關於SqlServer

SQL Agent 作業需每半小時跑一次報表,動態計算「上一個半小時區間」的起迄時間(如 10:00-10:30、10:30-11:00),作為預存程序參數。

T-SQL 腳本


DECLARE @BeginTime DATETIME, @EndTime DATETIME;
DECLARE @Hour INT, @Min INT;

SET @Min = DATEPART(MINUTE, GETDATE());

IF @Min < 30
BEGIN
    -- 目前在 :00~:30 區間,取上一個 :30~:00
    SET @BeginTime = DATEADD(HOUR, -1, CONVERT(VARCHAR(10), GETDATE(), 120) + ' ' + CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR) + ':30');
    SET @EndTime   = CONVERT(VARCHAR(10), GETDATE(), 120) + ' ' + CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR) + ':00';
END
ELSE
BEGIN
    -- 目前在 :30~:00 區間,取本小時 :00~:30
    SET @BeginTime = CONVERT(VARCHAR(10), GETDATE(), 120) + ' ' + CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR) + ':00';
    SET @EndTime   = CONVERT(VARCHAR(10), GETDATE(), 120) + ' ' + CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR) + ':30';
END

EXEC up_GenReport @BeginTime, @EndTime;

邏輯說明

當前時間@Min計算區間@BeginTime@EndTime
10:1515 (<30)上一個半小時09:3010:00
10:4545 (>=30)本小時前半段10:0010:30

部署建議

  • 建立 SQL Agent 作業,**排程類型**選「週期性」,**頻率**設「每 30 分鐘」。
  • 作業步驟型別「Transact-SQL 指令碼」,貼上上述腳本。
  • 確保 `up_GenReport` 預存程序存在並接受兩個 `DATETIME` 參數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved