最近在維護一個老的系統,用的是access數據庫,但是客戶需要一個比較負責的查詢功能,涉及了去除周末,節假日設置,還有很多額為的特殊條件。
由於access數據庫不支持存儲過程,偽存儲過程又很不方便,所以最初打算用臨時表用后刪除的策略,后來拋棄了。不過還是先把相應的實現總結一下。
一、access中表的操作
1、創建表
[sql] create table new_table_name (名稱 類型,名稱 類型) [/sql]
常見的類型包括: int 整形 text 文本 DateTime 日期 money 貨幣
設置主鍵和自增: autoincrement(1,1)
2、刪除表
[sql] Drop table new_table_name [/sql]
3、插入記錄
[sql] INSERT INTO new_table_name (id,name) select orthertable.id,orthertable.name from orthertable [/sql]
二、日期查詢
[sql] DateValue(日期列) between #2013-2-1# and #2013-2-21# [/sql]
這里使用了DateValue這個函數,如果不用這個函數的話,這個語句就要變成: [sql] 日期列 between #2013-2-1# and #2013-2-21 23:59:59# [/sql]
很容易犯的一個錯誤就是日期區間的后一個日期沒有加“23:59:59”,這樣最后一天的數據無法查詢。
[sql]select * from tablename where weekday(startm) <> 1 and weekday(startm) <> 7[/sql]
weekday()函數可以獲取日期是星期幾,結果為1到7的數字,1和7代表周日和周六。
三、時間查詢
[sql] TimeValue(startm) between #09:00# AND #12:00# [/sql]
這里使用的是TimeValue函數。