首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vba+Access日期比较,网下说的很多方法都试过了,还是不行

2013-01-23 
vba+Access日期比较,网上说的很多方法都试过了,还是不行本帖最后由 waitling 于 2013-01-09 14:05:36 编辑

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支持还可以,保持用它们吧,不然可能出现一些意外的错误。

热点排行