ASP實現日期的加減運算

來源:互聯網
上載者:User
  今天在工作中遇到了一個問題,需要按時間查詢,可是查詢出來的結果顯示的不正確。舉個例子來說,要尋找出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 的表示日期的文字。
    設定
    interval 參數可以有以下值:
    設定  描述
    yyyy  年
     q   季度
     m   月
     y   一年的日數
     d   日
     w   一周的日數
     ww   周
     h   小時
     n   分鐘
     s   秒

    說明
     可用 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 日所在的星期。有關數值,請參閱“設定”部分。

    設定
    interval 參數可以有以下值:
     設定   描述
     yyyy   年
     q     季度
     m     月
     y     一年的日數
     d     日
     w     一周的日數
     ww     周
     h     小時
     n     分鐘
     s     秒

    firstdayofweek 參數可以有以下值:
       常數     值          描述
     vbUseSystem    0     使用國家語言支援 (NLS) API 設定。
     vbSunday     1        星期日(預設)
     vbMonday     2        星期一
     vbTuesday     3       星期二
     vbWednesday    4        星期三
     vbThursday     5       星期四
     vbFriday      6       星期五
     vbSaturday     7       星期六

    firstweekofyear 參數可以有以下值:
       常數      值          描述
     vbUseSystem    0     使用國家語言支援 (NLS) API 設定。
     vbFirstJan1    1     由 1 月 1 日所在的星期開始(預設)。
     vbFirstFourDays  2     由在新年中至少有四天的第一周開始。
     vbFirstFullWeek  3     由在新的一年中第一個完整的周開始。

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

    要計算 date1 和 date2 相差的天數,可以使用“一年的日數”(“y”)或“日”(“d”)。當 interval 為“一周的日數”(“w”)時,DateDiff 返回兩個日期之間的星期數。如果 date1 是星期一,則 DateDiff 計算到 date2 之前星期一的數目。此結果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),則 DateDiff 函數返回日曆表中兩個日期之間的星期數。Function Compute 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 表示相差一個年份。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.