最近在维护一个老的系统,用的是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函数。