标题:ASP中以下的情况要如何运用DateDiff
只看楼主
liny392
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-29
结帖率:100%
已结贴  问题点数:20 回复次数:7 
ASP中以下的情况要如何运用DateDiff
ACCESS数据表sheet1表里有字段:购置日期,文本型,数据类似为:“2005.9”,或“没填”或空值;使用年限,数字型,或者为数字,或者为空值.现在我要做的是查找:特定某个时间enddate(字符串类型)与购置日期之差,大于使用年限的记录(这里如果“使用年限”字段为空的话使用默认值5),

sql="select * from sheet1 where (InStr(现状,'已报废') <=0 or isnull(现状))"
sql = sql & " and ( (DateDiff('Y',replace(购置日期,'.','-'),"&enddate&")/365)>5 )"
(或者sql = sql & " and ( (DateDiff('yyyy',replace(购置日期,'.','-'),"&enddate&"))>5 )")
rs1.open sql,conn,1,1
运行结果是
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC 驱动程序不支持所需的属性。
哪位大虾帮我看看应该怎么写这个语句,


如果改成下面的:
sql="select * from sheet1 where ( InStr(iif( isnull(现状),'',现状 ),'已报废') <=0 )"这句运行没错,532条记录
sql = sql & " and DateDiff('y',CDate( Mid(购置日期,1,Instr(购置日期,'.')-1) + '-' + Mid(购置日期,Instr(购置日期,'.')+1,len(购置日期)) + '-1' ),'"&enddate&"' )/365> IIf(isnull(使用年限),5,使用年限)"
编译没有错误.可是运行结果还是错的唉,查出来的记录是空的...(记录用肉眼判断,绝不是空的)
把DateDiff('y',CDate( Mid(购置日期,1,Instr(购置日期,'.')-1) + '-' + Mid(购置日期,Instr(购置日期,'.')+1,len(购置日期)) + '-1' ),'"&to_day1&"' )/365计算出来写在网页上结果又没错...
搜索更多相关主题的帖子: ASP DateDiff 
2009-11-29 20:50
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:7 
再加个查询条件限制购置日期不能为空呢?
2009-11-30 11:45
chenguoxing517
Rank: 7Rank: 7Rank: 7
来 自:广东广州
等 级:黑侠
威 望:1
帖 子:154
专家分:619
注 册:2009-9-28
得分:7 
先判断这个购置日期是否为空?然后再执行sql语句
2009-11-30 13:15
liny392
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-29
得分:0 
sql = sql & " and DateDiff('y',CDate( Mid(购置日期,1,Instr(购置日期,'.')-1) + '-' + Mid(购置日期,Instr(购置日期,'.')+1,len(购置日期)) + '-1' ),'"&enddate&"' )/365> 5"这条改成五的话也是不对的啊。。。
2009-11-30 14:33
liny392
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-29
得分:0 
为什么这么少人帮我回答捏。。我发了好几个网站了,至今都没有解决。。。。人品不够
2009-11-30 14:48
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
加一个Where后的条件 and 购置日期<>''
2009-11-30 18:18
liny392
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-29
得分:0 
不会操作。。不让我结贴就不让我发言。。。不行的。如果有空值那会编译不通过。。所以。我特意把值全填满了,但是算出来的是空集
2009-12-02 13:37
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:0 
ACCESS数据库既不支持replace函数,又不支持substring函数,所以楼主顶楼方法是绝对行不通的

楼主在四楼的贴子,方法可行,但前提就是存入[购置日期]的数据必须是固定长度的字符串,才好用left,mid,right,instr函数

象这样的问题,在存入数据库前,应当判断该值是否是发球日期时间格式


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2009-12-02 21:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-293402-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.187140 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved