在SQL Server中建立定時(shí)任務(wù),處理時(shí)間超過一天的記錄
這個(gè)不能用觸發(fā)器,要用作業(yè)。
打開企業(yè)管理器,進(jìn)入你服務(wù)器名下的“管理”,啟動(dòng)SQL Server代理。然后查看服務(wù)器屬性,選中“自動(dòng)啟動(dòng)SQL Server代理”。
接下來進(jìn)入SQL Server代理下的“作業(yè)”,在右邊點(diǎn)右鍵選“新建作業(yè)”。
在“常規(guī)”里,隨便輸入一個(gè)作業(yè)名,分類要選最后一項(xiàng)“數(shù)據(jù)庫維護(hù)”。
在“步驟”里,點(diǎn)“新建步驟”,隨便輸入一個(gè)步驟名,數(shù)據(jù)庫選成你的數(shù)據(jù)庫,命令里輸入你刪除記錄的語句,也可以通過“打開”來裝載T-SQL腳本,弄好后記得分析一下,沒有問題再繼續(xù)。在“高級”里將“失敗時(shí)的操作”改成“轉(zhuǎn)到下一步”。
在“調(diào)度”里,點(diǎn)“新建調(diào)度”,隨便輸入一個(gè)調(diào)度名,點(diǎn)“更改”,“發(fā)生頻率”選每天,“一次發(fā)生于”里設(shè)置17:00:00,然后點(diǎn)“確定”,再點(diǎn)“確定”,再點(diǎn)“確定”,配置就完成了。
SQL語句:
update n_project set p_flag = 0, p_stime = NULL where p_id IN (select p_id from n_project where p_flag = 1 and datediff(hh, p_stime, GetDate()) > 24);;--將超過一天的記錄選出,設(shè)置p_flag和p_stime字段
注:hh為小時(shí),datediff 可比較兩個(gè)日期的時(shí)間差,GetDate()可獲得當(dāng)前時(shí)間
DateDiff 函數(shù); (轉(zhuǎn)貼)
返回 Variant (Long) 的值,表示兩個(gè)指定日期間的時(shí)間間隔數(shù)目。
語法
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear]])
DateDiff 函數(shù)語法中有下列命名參數(shù):
部分 描述 interval 必要。字符串表達(dá)式,表示用來計(jì)算date1 和 date2 的時(shí)間差的時(shí)間間隔 Date1□date2 必要;Variant (Date)。計(jì)算中要用到的兩個(gè)日期。 Firstdayofweek 可選。指定一個(gè)星期的第一天的常數(shù)。如果未予指定,則以星期日為第一天。 firstweekofyear 可選。指定一年的第一周的常數(shù)。如果未予指定,則以包含 1 月 1 日的星期為第一周。
設(shè)置
interval 參數(shù)的設(shè)定值如下:
設(shè)置 描述 yyyy 年 q 季 m 月 y 一年的日數(shù) d 日 w 一周的日數(shù) ww 周 h 時(shí) n 分鐘 s 秒
firstdayofweek 參數(shù)的設(shè)定值如下:
常數(shù) 值 描述 vbUseSystem 0 使用 NLS API 設(shè)置。 vbSunday 1 星期日(缺省值) vbMonday 2 星期一 vbTuesday 3 星期二 vbWednesday 4 星期三 vbThursday 5 星期四 vbFriday 6 星期五 vbSaturday 7 星期六
常數(shù) 值 描述 vbUseSystem 0 用 NLS API 設(shè)置。 vbFirstJan1 1 從包含 1 月 1 日的星期開始(缺省值)。 vbFirstFourDays 2 從第一個(gè)其大半個(gè)星期在新的一年的一周開始。 vbFirstFullWeek 3 從第一個(gè)無跨年度的星期開始。
說明
DateDiff 函數(shù)可用來決定兩個(gè)日期之間所指定的時(shí)間間隔數(shù)目。例如,可以使用 DateDiff 來計(jì)算兩個(gè)日期之間相隔幾日,或計(jì)算從今天起到年底還有多少個(gè)星期。
為了計(jì)算 date1 與 date2 相差的日數(shù),可以使用“一年的日數(shù)”(y) 或“日”(d)。當(dāng) interval 是“一周的日數(shù)”(w) 時(shí),DateDiff 返回兩日期間的周數(shù)。如果 date1 是星期一,DateDiff 計(jì)算到 date2 為止的星期一的個(gè)數(shù)。這個(gè)數(shù)包含 date2 但不包含 date1。不過,如果 interval 是“周”(ww),則 DateDiff 函數(shù)返回兩日期間的“日歷周”數(shù)。由計(jì)算 date1 與 date2 之間星期日的個(gè)數(shù)而得。如果 date2 剛好是星期日,則 date2 也會(huì)被加進(jìn) DateDiff 的計(jì)數(shù)結(jié)果中;但不論 date1 是否為星期日,都不將它算進(jìn)去。
如果 date1 比 date2 來得晚,則 DateDiff 函數(shù)的返回值為負(fù)數(shù)。
firstdayofweek 參數(shù)會(huì)影響使用時(shí)間間隔符號 “W” 或 “WW” 計(jì)算的結(jié)果。
如果 date1 或 date2 是日期文字,則指定的年份成為該日期的固定部分。但是,如果 date1 或 date2 用雙引號 (' ') 括起來,且年份略而不提,則在每次計(jì)算表達(dá)式 date1 或 date2 時(shí),當(dāng)前年份都會(huì)插入到代碼之中。這樣就可以書寫適用于不同年份的程序代碼。
在計(jì)算 12 月 31 日和來年的 1 月 1 日的年份差時(shí),DateDiff 返回 1 表示相差一個(gè)年份,雖然實(shí)際上只相差一天而已。
DateDiff 函數(shù);(轉(zhuǎn)貼)
返回 Variant (Long) 的值,表示兩個(gè)指定日期間的時(shí)間間隔數(shù)目。
語法
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear]])
DateDiff 函數(shù)語法中有下列命名參數(shù):
部分 描述 interval 必要。字符串表達(dá)式,表示用來計(jì)算date1 和 date2 的時(shí)間差的時(shí)間間隔 Date1□date2 必要;Variant (Date)。計(jì)算中要用到的兩個(gè)日期。 Firstdayofweek 可選。指定一個(gè)星期的第一天的常數(shù)。如果未予指定,則以星期日為第一天。 firstweekofyear 可選。指定一年的第一周的常數(shù)。如果未予指定,則以包含 1 月 1 日的星期為第一周。
設(shè)置
interval 參數(shù)的設(shè)定值如下:
設(shè)置 描述 yyyy 年 q 季 m 月 y 一年的日數(shù) d 日 w 一周的日數(shù) ww 周 h 時(shí) n 分鐘 s 秒
firstdayofweek 參數(shù)的設(shè)定值如下:
常數(shù) 值 描述 vbUseSystem 0 使用 NLS API 設(shè)置。 vbSunday 1 星期日(缺省值) vbMonday 2 星期一 vbTuesday 3 星期二 vbWednesday 4 星期三 vbThursday 5 星期四 vbFriday 6 星期五 vbSaturday 7 星期六
常數(shù) 值 描述 vbUseSystem 0 用 NLS API 設(shè)置。 vbFirstJan1 1 從包含 1 月 1 日的星期開始(缺省值)。 vbFirstFourDays 2 從第一個(gè)其大半個(gè)星期在新的一年的一周開始。 vbFirstFullWeek 3 從第一個(gè)無跨年度的星期開始。
說明
DateDiff 函數(shù)可用來決定兩個(gè)日期之間所指定的時(shí)間間隔數(shù)目。例如,可以使用 DateDiff 來計(jì)算兩個(gè)日期之間相隔幾日,或計(jì)算從今天起到年底還有多少個(gè)星期。
為了計(jì)算 date1 與 date2 相差的日數(shù),可以使用“一年的日數(shù)”(y) 或“日”(d)。當(dāng) interval 是“一周的日數(shù)”(w) 時(shí),DateDiff 返回兩日期間的周數(shù)。如果 date1 是星期一,DateDiff 計(jì)算到 date2 為止的星期一的個(gè)數(shù)。這個(gè)數(shù)包含 date2 但不包含 date1。不過,如果 interval 是“周”(ww),則 DateDiff 函數(shù)返回兩日期間的“日歷周”數(shù)。由計(jì)算 date1 與 date2 之間星期日的個(gè)數(shù)而得。如果 date2 剛好是星期日,則 date2 也會(huì)被加進(jìn) DateDiff 的計(jì)數(shù)結(jié)果中;但不論 date1 是否為星期日,都不將它算進(jìn)去。
如果 date1 比 date2 來得晚,則 DateDiff 函數(shù)的返回值為負(fù)數(shù)。
firstdayofweek 參數(shù)會(huì)影響使用時(shí)間間隔符號 “W” 或 “WW” 計(jì)算的結(jié)果。
如果 date1 或 date2 是日期文字,則指定的年份成為該日期的固定部分。但是,如果 date1 或 date2 用雙引號 (' ') 括起來,且年份略而不提,則在每次計(jì)算表達(dá)式 date1 或 date2 時(shí),當(dāng)前年份都會(huì)插入到代碼之中。這樣就可以書寫適用于不同年份的程序代碼。
在計(jì)算 12 月 31 日和來年的 1 月 1 日的年份差時(shí),DateDiff 返回 1 表示相差一個(gè)年份,雖然實(shí)際上只相差一天而已。
