DATEDIFF與dateadd在access和mssql下的使用例子

 Access中:DateDiff('d',Time1,Time2)
Sql中:DateDiff(d,Time1,Time2)
下面是我自己的sql語句
'判斷數據庫類型
IF IsSqlDataBase = 1 Then
Conn.execute("Delete from lyt_log_info where datediff(day,logintime,getdate())>=3 ")
Else
Conn.execute("Delete from lyt_log_info where datediff('d',logintime,now())>=3")
End IF

sql中d 或者day的引號不要 注意後面獲得系統時間的函數是不同的
如在access中使用
Conn.execute("Delete from lyt_log_info where datediff(day,logintime,getdate())>=3 ")
則會提示
Microsoft JET Database Engine (0x80040E14)
表達式中 'getdate' 函數未定義。
如在access中day或者w y等不加引號,會提示至少沒有一個參數被指定

例子:

Response.write "離2007-9-18還有"&datediff("d",now(),"2007-9-18")&"天"
距離某一天還有多少天,你可以修改下參數 ""d"" 算出距離某天還有多少月 多少week 多少 hour




注:DateDiff 函數可用來決定兩個日期之間所指定的時間間隔數目。例如,可以使用 DateDiff 來計算兩個日期之間相隔幾日,或計算從今天起到年底還有多少個星期。爲了計算 date1 與 date2 相差的日數,可以使用“一年的日數”(y) 或“日”(d)。當 interval 是“一週的日數”(w) 時,DateDiff 返回兩日期間的週數。如果 date1 是星期一,DateDiff 計算到 date2 爲止的星期一的個數。這個數包含 date2 但不包含 date1。不過,如果 interval 是“周”(ww),則 DateDiff 函數返回兩日期間的“日曆周”數。由計算 date1 與 date2 之間星期日的個數而得。如果 date2 剛好是星期日,則 date2 也會被加進 DateDiff 的計數結果中;但不論 date1 是否爲星期日,都不將它算進去。如果 date1 比 date2 來得晚,則 DateDiff 函數的返回值爲負數。firstdayofweek 參數會影響使用時間間隔符號 “W” 或 “WW” 計算的結果。如果 date1 或 date2 是日期文字,則指定的年份成爲該日期的固定部分。但是,如果 date1 或 date2 用雙引號 (" ") 括起來,且年份略而不提,則在每次計算表達式 date1 或 date2 時,當前年份都會插入到代碼之中。這樣就可以書寫適用於不同年份的程序代碼。在計算 12 月 31 日和來年的 1 月 1 日的年份差時,DateDiff 返回 1 表示相差一個年份,雖然實際上只相差一天而已。

DateAdd 和 DateDiff 的第一個參數
DateAdd 返回一個日期加上特定時間間隔後的值。
語法:DateAdd(interval, number, date)
interval 表示時間單位,即指示 number 是表示年,還是月,還是分,還是其它的,如下:
yyyy 年
q 季度
m 月
y 一年的日數
d 日
w 一週的日數
ww 周
h 小時
n 分鐘
s 秒
不好理解的是:y、w,開始我以爲 y 的單位是 365天,w 的單位是 7天。其實不是的,細讀了微軟參考並作了測試後發現,這其中 y、w、d 是同意義的,表示天數。
另外,DateDiff 的第一個參數中 y 和 d 是同意義的,w 不再與 d 同意義,而是表示相隔多少個 7天,這與 ww 不同。假如今天是一週的第一天,至於星期幾是一週的第一天得看計算機設置和第四個參數了,那麼今天與昨天相隔 0 個 w,相隔 1 個 ww,因爲今天與昨天相差不足 1 個 7天,但今天已經是另外一週了。
很難想像吧,但事實就是這樣,總結一下。

不同
1、數據庫的問題,Access和Sql讀取時間的函數不一樣,Now()只能在Access中使用,在Sql中只能使用GetDate()函數來獲取系統時間,相應的其他函數如Time(),反正大家在調試的時候注意下

2、就是DateDiff('d',Time1,Time2),剛開始的時候我專數據庫ACCESS專SQL發現這個函數怎麼調試在多不能通過,在ACCESS下可以使用的到了SQL就不能使用,鬱悶~~~

具體是:

Access中:DateDiff('d',Time1,Time2)

Sql中:DateDiff(d,Time1,Time2)
下面是我自己的sql語句
'判斷數據庫類型
IF IsSqlDataBase = 1 Then
Conn.execute("Delete from lyt_log_info where datediff(day,logintime,getdate())>=3 ")
Else
Conn.execute("Delete from lyt_log_info where datediff('d',logintime,now())>=3")
End IF

sql中d 或者day的引號不要 注意後面獲得系統時間的函數是不同的
如在access中使用
Conn.execute("Delete from lyt_log_info where datediff(day,logintime,getdate())>=3 ")
則會提示
Microsoft JET Database Engine (0x80040E14)
表達式中 'getdate' 函數未定義。
如在access中day或者w y等不加引號,會提示至少沒有一個參數被指定

dateAdd

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

DateAdd(interval, number, date)

參數
interval

必選項。字符串表達式,表示要添加的時間間隔。有關數值,請參閱“設置”部分。

number

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

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 型值,則在計算前四捨五入爲最接近的整數。

<SCRIPT type=text/javascript> addthis_pub= &apos;wolfit&apos;; addthis_logo= &apos;http://download.rainbowsoft.org/image/common/zbloglogo.gif&apos;; addthis_brand= &apos;Z-Blog&apos;; addthis_options= &apos;favorites, delicious, twitter, digg, myspace, facebook, google, live, email, more&apos;; </SCRIPT>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章