網(wǎng)站系統(tǒng)使用ACCESS數(shù)據(jù)庫時(shí),查詢時(shí)怎么比較日期和時(shí)間呢?為什么常常比較出來卻是錯(cuò)誤的呢?比如早的日期比遲的日期大?
在ASP中先做一個(gè)小測試,就是比較兩個(gè)日期,代碼如下:
<%="2007-2-1" > "2007-10-01"%>
結(jié)果顯示為:True
奇怪了,為什么大日期還小呢?把日期的雙引號(hào)去掉,還是返回:True
那是怎么回事呢?原來是單純時(shí)間或用雙引號(hào)括起來,在ASP中不代表時(shí)間,時(shí)間需要用兩個(gè)井號(hào)(#)括起來,如下:
<%=#2007-2-1# > #2007-10-01#%>
這回就返回False了,證明時(shí)間比較已經(jīng)正確。
所以在ASP中需要用井號(hào)括起來。ASP還有其他日期函數(shù)用來做比較的,那就是:DateDiff,語法如下:
DateDiff( 間隔字符, 日期1, 日期2 [,firstdayofweek[, firstweekofyear]])
一般使用 DateDiff( 間隔字符, 日期1, 日期2) 就足夠了。
解釋一下:此函數(shù)返回間隔的日期或時(shí)間,返回的是年、月、日就要設(shè)置間隔字符了,比如間隔字符為:"yyyy" 就表示比較年份, "d" 比較日期,"m" 比較月份,如果日期1晚于日期1,那么會(huì)返回負(fù)數(shù)。
舉個(gè)例子:
<%=DateDiff( "d", #2008-1-10#, #2008-1-2#)%>
結(jié)果是:-8
ACCESS查詢中怎么寫日期比較的SQL語句?
1、首先在設(shè)計(jì)ACCESS數(shù)據(jù)表時(shí),日期字段必須為:日期/時(shí)間,如果字段類型為字符等,日期比較時(shí)會(huì)不正確。
2、SQL語句例子(查找比指定日期后的記錄):
代碼一
select * from 表名 where DateDiff( "d", 日期字段列名, #指定日期#) <= 0
代碼二
select * from 表名 where 日期字段列名>#指定日期#
注意指定日期兩邊要用井號(hào)括起來的。
要實(shí)現(xiàn)一個(gè)表單輸入像"1963-7-13 17:00:00"怎么判斷,最重要的問題是要怎么才能驗(yàn)證表單里面的時(shí)間不能小于現(xiàn)在的時(shí)間。也就是不能小于now()。
字符串轉(zhuǎn)化為時(shí)間類型,在ASP里用強(qiáng)制類型轉(zhuǎn)換cdate
請看例子:
aaa="2963-7-13 17:00:00"
bbb=now()
if cdate(aaa)>bbb then
response.Write("表單的時(shí)間大")
else
Response.write("表單的時(shí)間小")
end if
該文章在 2012/2/24 11:03:46 編輯過