标题:DateDiff为什么这样就取不到我想要的数据呢?
只看楼主
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
结帖率:100%
已结贴  问题点数:20 回复次数:5 
DateDiff为什么这样就取不到我想要的数据呢?
话说我有这样的一个表格(SQL Server 2000):
id     YouXiaoQi(有效期)
1      2012-01-02  
2      2012-01-23
3      2012-01-13,2013-05-13
4      2012-01-13,2013-05-13,2015-10-18
5      2012-01-13
6      2016-12-13
...    ...
注:
NowStr=Year(now())&"-"&Right("0"&Month(now()),2)&"-"&Right("0"&Day(now()),2)'格式化日期格式为2012-02-13形式,不知道有没有用。


就是说有效期中字段中的时间不是定数,可以只有一个,最多可能有6个,不过都是由","分割,就是产品的到期时间。
我想用DateDiff取出截止到今天还有一个月就到期的数据。
如果有效期字段都是一个时间,那就很好解决了:
select id from 表格 where DateDiff(day,'"&NowStr&"',YouXiaoQi)<30 order by id asc

由于有效期字段可能不是一个,于是我想起来了:
曾经有个可以取数组中最大值的函数:
程序代码:
function GetMax(str) 
num=split(str,",") 
max=num(0) 
for ii=0 to ubound(num) 
if num(ii)>max then max=num(ii) 
next 
GetMax=max 
end function 


于是我就:
Sql="select id from 表格 where DateDiff(day,'"&NowStr&"','"&GetMax(YouXiaoQi)&"')<30  order by id asc"


可是,我木有成功......
我想这个问题只有神仙才可以解决,于是我就在这里等神仙的到来......
搜索更多相关主题的帖子: 数据 2000 有效期 
2012-03-15 13:46
stock2
Rank: 2
等 级:论坛游民
帖 子:11
专家分:12
注 册:2009-2-20
得分:5 
cdate呢?转成日期格式试试
2012-03-15 15:54
ysf0181
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:55
帖 子:914
专家分:2385
注 册:2006-10-4
得分:15 

set rs = server.creatobject("adodb.recordset")
rs.open"select * from 表格 order by id asc",conn,1,1
do while not rs.eof
   if rs("YouXiaoQi") <> "" or isnull(rs("YouXiaoQi")) = false then  
      if DateDiff("d","&NowStr&",rs("YouXiaoQi"))<30  then
         '你要处理的事情
      end if
   end if
rs.movenext
loop
rs.close
set rs = nothing
conn.close
set conn = nothing




ASP讨论QQ群:251346273
2012-03-15 16:22
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
得分:0 
回复 2楼 stock2
用不用Cdate都一样,这货太弱。
而且在用DateDiff的时候应该是系统自动把字符转为日期的。

我的ASP小站:http://www./
2012-03-16 08:55
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
得分:0 
回复 3楼 ysf0181
版主这个貌似也不行吧?
如果YouXiaoQi是两个以上的话怎么办呢?

我的ASP小站:http://www./
2012-03-16 09:03
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
得分:0 
感谢版主 ysf0181
用的方法是正确的,我一开始没有理解。


这样就来了又一个问题了,我怎么才能统计出30天内到期的产品的总数呢?
用rs.recordcount是不行了吧?
谢谢!

[ 本帖最后由 towering 于 2012-3-19 10:39 编辑 ]

我的ASP小站:http://www./
2012-03-19 10:32



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




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

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