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