| 導購 | 订阅 | 在线投稿
分享
 
 
 

ASP實現SQL語句日期格式的加減運算

來源:互聯網  2008-08-30 17:49:12  評論

今天在工作中遇到了一個問題,需要按時間查詢,可是查詢出來的結果顯示的不正確。舉個例子來說,要查找出2007-10-12至2007-10-31之間在網站上注冊的會員,選擇好日期後,點擊「查詢」按鈕,發現2007-10-31注冊的會員的信息根本沒有顯示出來,試驗了幾次結果都是一樣。調試程序發現,原來是在SQL語句這裏出現了問題。

SQL語句如下:SELECT * FROM userinfo WHERE regtime >= '2007-10-12' AND regtime <= '2007-10-31'。初看上去這條SQL語句沒有錯誤,可是對照數據庫中相應字段保存的值以後,發現保存的值並不是簡單的日期形式,而是日期+時間的形式,即:yyyy-MM-dd HH:mm:ss,這時SQL語句在判斷regtime和'2007-10-31'的大小時,會認爲'2007-10-31'寫的不完整,所以不會認爲這兩個值是相等的。這可怎麽辦呢?

不用著急,ASP爲我們提供了日期加減的函數,來幫我們解決這一問題。

1.日期相加

DateAdd 函數

返回已添加指定時間間隔的日期。

DateAdd(interval, number, date)

DateAdd 函數的語法有以下參數

(1)interval 必選項。字符串表達式,表示要添加的時間間隔。有關數值,請參閱「設置」部分。

(2)number 必選項。數值表達式,表示要添加的時間間隔的個數。數值表達式可以是正數(得到未來的日期)或負數(得到過去的日期)。

(3)date 必選項。Variant 或要添加 interval 的表示日期的文字。

說明

可用 DateAdd 函數從日期中添加或減去指定時間間隔。例如可以使用 DateAdd 從當天算起 30 天以後的日期或從現在算起 45 分鍾以後的時間。要向 date 添加以「日」爲單位的時間間隔,可以使用「一年的日數」(「y」)、「日」(「d」)或「一周的日數」(「w」)。

DateAdd 函數不會返回無效日期。如下示例將 95 年 1 月 31 日加上一個月:

NewDate = DateAdd("m", 1, "31-Jan-95")

在這個示例中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31 日。如果 date 爲 96 年 1 月 31 日,則返回 96 年 2 月 29 日,這是因爲 1996 是閏年。

如果計算的日期是在公元 100 年之前,則會産生錯誤。

如果 number 不是 Long 型值,則在計算前四舍五入爲最接近的整數。

2.日期相減

DateDiff 函數

返回兩個日期之間的時間間隔。

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])

DateDiff 函數的語法有以下參數:

(1)interval 必選項。字符串表達式,表示用于計算 date1 和 date2 之間的時間間隔。有關數值,請參閱「設置」部分。

(2)date1, date2 必選項。日期表達式。用于計算的兩個日期。

(3)Firstdayofweek 可選項。指定星期中第一天的常數。如果沒有指定,則默認爲星期日。有關數值,請參閱「設置」部分。

(4)Firstweekofyear 可選項。指定一年中第一周的常數。如果沒有指定,則默認爲 1 月 1 日所在的星期。有關數值,請參閱「設置」部分。

說明

DateDiff 函數用于判斷在兩個日期之間存在的指定時間間隔的數目。例如可以使用 DateDiff 計算兩個日期相差的天數,或者當天到當年最後一天之間的星期數。

要計算 date1 和 date2 相差的天數,可以使用「一年的日數」(「y」)或「日」(「d」)。當 interval 爲「一周的日數」(「w」)時,DateDiff 返回兩個日期之間的星期數。如果 date1 是星期一,則 DateDiff 計算到 date2 之前星期一的數目。此結果包含 date2 而不包含 date1。如果 interval 是「周」(「ww」),則 DateDiff 函數返回日曆表中兩個日期之間的星期數。函數計算 date1 和 date2 之間星期日的數目。如果 date2 是星期日,DateDiff 將計算 date2,但即使 date1 是星期日,也不會計算 date1。

如果 date1 晚于 date2,則 DateDiff 函數返回負數。

firstdayofweek 參數會對使用「w」和「ww」間隔符號的計算産生影響。

如果 date1 或 date2 是日期文字,則指定的年度會成爲日期的固定部分。但是如果 date1 或 date2 被包括在引號 (" ") 中並且省略年份,則在代碼中每次計算 date1 或 date2 表達式時,將插入當前年份。這樣就可以編寫適用于不同年份的程序代碼。

在 interval 爲「年」(「yyyy」)時,比較 12 月 31 日和來年的 1 月 1 日,雖然實際上只相差一天,DateDiff 返回 1 表示相差一個年份。

  今天在工作中遇到了一個問題,需要按時間查詢,可是查詢出來的結果顯示的不正確。舉個例子來說,要查找出2007-10-12至2007-10-31之間在網站上注冊的會員,選擇好日期後,點擊「查詢」按鈕,發現2007-10-31注冊的會員的信息根本沒有顯示出來,試驗了幾次結果都是一樣。調試程序發現,原來是在SQL語句這裏出現了問題。   SQL語句如下:SELECT * FROM userinfo WHERE regtime >= '2007-10-12' AND regtime <= '2007-10-31'。初看上去這條SQL語句沒有錯誤,可是對照數據庫中相應字段保存的值以後,發現保存的值並不是簡單的日期形式,而是日期+時間的形式,即:yyyy-MM-dd HH:mm:ss,這時SQL語句在判斷regtime和'2007-10-31'的大小時,會認爲'2007-10-31'寫的不完整,所以不會認爲這兩個值是相等的。這可怎麽辦呢?   不用著急,ASP爲我們提供了日期加減的函數,來幫我們解決這一問題。   1.日期相加   DateAdd 函數   返回已添加指定時間間隔的日期。   DateAdd(interval, number, date)   DateAdd 函數的語法有以下參數   (1)interval 必選項。字符串表達式,表示要添加的時間間隔。有關數值,請參閱「設置」部分。   (2)number 必選項。數值表達式,表示要添加的時間間隔的個數。數值表達式可以是正數(得到未來的日期)或負數(得到過去的日期)。   (3)date 必選項。Variant 或要添加 interval 的表示日期的文字。   說明   可用 DateAdd 函數從日期中添加或減去指定時間間隔。例如可以使用 DateAdd 從當天算起 30 天以後的日期或從現在算起 45 分鍾以後的時間。要向 date 添加以「日」爲單位的時間間隔,可以使用「一年的日數」(「y」)、「日」(「d」)或「一周的日數」(「w」)。   DateAdd 函數不會返回無效日期。如下示例將 95 年 1 月 31 日加上一個月:   NewDate = DateAdd("m", 1, "31-Jan-95")   在這個示例中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31 日。如果 date 爲 96 年 1 月 31 日,則返回 96 年 2 月 29 日,這是因爲 1996 是閏年。   如果計算的日期是在公元 100 年之前,則會産生錯誤。   如果 number 不是 Long 型值,則在計算前四舍五入爲最接近的整數。   2.日期相減   DateDiff 函數   返回兩個日期之間的時間間隔。   DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])   DateDiff 函數的語法有以下參數:   (1)interval 必選項。字符串表達式,表示用于計算 date1 和 date2 之間的時間間隔。有關數值,請參閱「設置」部分。   (2)date1, date2 必選項。日期表達式。用于計算的兩個日期。   (3)Firstdayofweek 可選項。指定星期中第一天的常數。如果沒有指定,則默認爲星期日。有關數值,請參閱「設置」部分。   (4)Firstweekofyear 可選項。指定一年中第一周的常數。如果沒有指定,則默認爲 1 月 1 日所在的星期。有關數值,請參閱「設置」部分。   說明   DateDiff 函數用于判斷在兩個日期之間存在的指定時間間隔的數目。例如可以使用 DateDiff 計算兩個日期相差的天數,或者當天到當年最後一天之間的星期數。   要計算 date1 和 date2 相差的天數,可以使用「一年的日數」(「y」)或「日」(「d」)。當 interval 爲「一周的日數」(「w」)時,DateDiff 返回兩個日期之間的星期數。如果 date1 是星期一,則 DateDiff 計算到 date2 之前星期一的數目。此結果包含 date2 而不包含 date1。如果 interval 是「周」(「ww」),則 DateDiff 函數返回日曆表中兩個日期之間的星期數。函數計算 date1 和 date2 之間星期日的數目。如果 date2 是星期日,DateDiff 將計算 date2,但即使 date1 是星期日,也不會計算 date1。   如果 date1 晚于 date2,則 DateDiff 函數返回負數。   firstdayofweek 參數會對使用「w」和「ww」間隔符號的計算産生影響。   如果 date1 或 date2 是日期文字,則指定的年度會成爲日期的固定部分。但是如果 date1 或 date2 被包括在引號 (" ") 中並且省略年份,則在代碼中每次計算 date1 或 date2 表達式時,將插入當前年份。這樣就可以編寫適用于不同年份的程序代碼。   在 interval 爲「年」(「yyyy」)時,比較 12 月 31 日和來年的 1 月 1 日,雖然實際上只相差一天,DateDiff 返回 1 表示相差一個年份。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有