注册 登录
编程论坛 ASP技术论坛

时间比较出错

xiongjl9555 发布于 2008-08-16 18:01, 1714 次点击
我在取时间段时发现一个问题,

datetim1="2008-8-6 0:00:00"
datetim2="2008-8-9 23:59:59"
上述两个字符是在另一个页面
dim date_tim1,date_tim2
date_tim1=CDate(request("datetim1"))
date_tim2=CDate(request("datetim2"))
if Datediff("s",date_tim1,date_tim2)>0 then
sql="select * from Adress where 加入时间> #"&date_tim1&"# and 加入时间< #"&date_tim1&"# "
end if
可是如果加入时间是 "2008-8-7 0:00:00"符合上述条件,数据就可以取出来,经过测试若datetim2="2008-8-10 23:59:59",加入时间是 "2008-8-7 0:00:00"时,数据就读不出来了,不知为何????
说明:加入时间是文本型的
请大家帮忙,谢谢
13 回复
#2
anlige2008-08-16 22:40
文本型和时间型比较?????
加入时间> #"&date_tim1&"# and 加入时间< #"&date_tim1&"# "
怎么两个都是date_tim1
#3
xiongjl95552008-08-16 23:45
对不起,我写错了,第二个应该是Date_tim2,可我之前的测试和统计怎么都是对的呢?如是文本型的怎么比较呢?
#4
yms1232008-08-17 10:44
sql="select * from Adress where 加入时间 between #"&date_tim1&"# and  #"&date_tim1&"# "
#5
xiongjl95552008-08-21 09:41
时间比较出错
Datediff("d",date_tim1,date_tim2)>0
这里date_tim1和date_tim2是否都必须是日期型的,可是我作了以下测试,觉得不对。
date_tim1="2008-8-18 0:00:00"
date_tim2=Now
Dateadiff="距今天的天數:" & DateDiff("d", Now, theDate)
response.write Dateadiff
在这里你说date_tim1是什么类型的???
#6
yms1232008-08-21 10:26
sql="select * from Adress where 加入时间> #"&date_tim1&"# and 加入时间< #"&date_tim1&"# "
在SQL里时间变量不能直接用>或<进行比较大小,因为字符串是没办法比较大小的。
而between就可以在SQL里取出两个时间段之间的数据。
#7
hahatuzi20002008-08-21 10:34
我试试看啊
datetim1="2008-8-6 0:00:00"
datetim2="2008-8-9 23:59:59"
上述两个字符是在另一个页面
dim date1,date2,time1,time2
date1=datevalue(datetim1)
date2=datevalue(datetim2)
time1=timevalue(datetim1)
time2=timevalue(datetim2)
if datediff("d",date1,date2)>=0 then
   if datediff("s",time1,time2)>0 then
sql="select * from Adress where 加入时间> #"&date_tim1&"# and 加入时间< #"&date_tim1&"# "
   end if
end if

试一试,有问题再说.
#8
xiongjl95552008-08-24 15:58
回复 6# yms123 的帖子
谢谢,我试试再说,再次表示感谢,我试了,因为我的加入时间是文本型的,所以按照你说的用Between,那么两时间段也应该用文本型的吧?可只有日期型的才加# #吧?所以我不知怎么些?

[[it] 本帖最后由 xiongjl9555 于 2008-8-24 16:16 编辑 [/it]]
#9
yms1232008-08-24 18:50
[bo][un]xiongjl9555[/un] 在 2008-8-24 15:58 的发言:[/bo]

谢谢,我试试再说,再次表示感谢,我试了,因为我的加入时间是文本型的,所以按照你说的用Between,那么两时间段也应该用文本型的吧?可只有日期型的才加# #吧?所以我不知怎么些?

sql="select * from Adress where 加入时间 between #"&date_tim1&"# and  #"&date_tim1&"# "
#10
xiongjl95552008-08-25 00:07
还是错误
我将SQL语句改写后读取数据出错,且错的离谱,不仅"2008-8-7"数据没读出来,而且还取出了其他不属于该区间的数据,不知为何???另外字符串肯定可以比较大小,不是经常有排序的问题吗?可其比较的机理是什么呢??谢谢
#11
yms1232008-08-25 00:24
楼主用的是什么数据库?
#12
xiongjl95552008-08-25 00:28
ACCESS数据库,谢谢
#13
yms1232008-08-25 00:41
Access里能直接使用DateDiff
#14
xiongjl95552008-08-25 00:50
我的数据库中的字段"加入时间"是文本型的,在 sql中只有日期型的才需要加#符号,你的意思就是文本型的字段取值在日期区间,以前我没考虑那么多就是用字符串比较,大多数时间还是对的,只有在数据库中"2008-8-7"的加入时间的数据没取出才意识到错误,可一直没解决,你教的办法我也用了就是不对,不知何故?
1