vba+Access日期比较,网上说的很多方法都试过了,还是不行
本帖最后由 waitling 于 2013-01-09 14:05:36 编辑 access数据库里ml_date的类型是“日期/时间”,
vba里sql的写法是"select top 1 ml_date from t_matchlist where ml_date <= #" & arg_date & "# order by ml_date desc"(变量arg_date的类型是Date)
按条件应该是找到离arg_date日期最近的日期,但是仍然找不到正确结果,比如arg_date = ‘2008-2-1’,但是找出来的却是'2010-12-19'(注:表t_matchlist里面肯定有小于2008-2-1的记录),请问究竟我哪里写错了
注:这种写法我也试过了,在vba里行不通(SELECT * FROM 表 WHERE DateDiff("d",列名,#变量#)<=0),vba里的sql语句不支持datediff函数
另外,刚才我也试过了"select top 1 ml_date from t_matchlist where format(ml_date,'yyyy-mm-dd') <= #" & Format(arg_date, "yyyy-mm-dd") & "# order by ml_date desc"和"select top 1 ml_date from t_matchlist where format(ml_date,'yyyy-mm-dd') <= '" & Format(arg_date, "yyyy-mm-dd") & "' order by ml_date desc",也还是不行
[解决办法]
arg_date,必须为标准的日期格式,你的格式错误了。Access对DateDiff、DataPart支持还可以,保持用它们吧,不然可能出现一些意外的错误。