access日期型数据sql查询遇到的问题
今天做个小东西,正巧碰到有日期型数据进行查询,说实话这个问题根本不算什么问题,居然让我整整花费了1个小时才弄明白,因为很长时间不写程序了,所以遇到这个问题比较茫然
我是这样写的sql语句
sqlstr = "select * from test where datefield='"&date()&"'"
结果运行就是提示表达式类型不正确,浪费了很长时间才想起来,access和sql日期型数据写法不一样,该死的access,正确写法应该是sqlstr="select * from test where datefield=#"&date&"#"
因为access里面日期型数据是用#括起来的,哎。。。这个问题解决后真是让人不爽,这叫什么问题!!!
还有一个小问题也值得提示大家一下下:
有的时候我们会设置日期型数据默认值:now()
这样的话,存在数据库里面的日期型数据就是例如:2010-01-01 11:00:00,这样
不过我们在sql语句查询相同一天的时候一般都写成sqlstr = "select * from test where datefield=#date()#",其实这很明显是一个错误,因为date()获取的值是只有日期的2010-01-01,所以比较的时候肯定是查询不到记录的,所以我们应该写成
sqlstr = "select * from test where year(datefield)=#"&year(now())&"# and month(datefield)=#"&month(now())&"# and day(datefield)=#"&day(now())&"#"
这样才可以查询到记录。。。
以上两个简单的问题看着不算什么问题,不过第一次遇到这种问题的人会很头疼,同时也会浪费许多时间,所以在这里就当提示大家了。。。