SQL查询日期条件则无法返回正常结果

SQL查询日期条件则无法返回正常结果
icon_q.gif    操作系统:win98
    编程工具:VB6+mssql
    问题:我有一SQL数据库,其中有一表中有一字段:进货时间 为短日期型,在SQL下对该字段进行查询无任何问题,但用VB+ADO查询则无法返回正常结果。比如我在VB中用SQL语句 Select * From 表1 Where 进货时间>='2000-10-12' ,则返回所有记录,而不论条件日期为那一天,如果用<'2000-10-12'则无任何记录返回,不知何故?
    水平: 刚入门(谷新生)
  
icon_a.gif    在查询的时候,使用下列语句是正确的:
     SELECT * FORM 表一 WHERE 进货时间>=#2000-10-12#
    查询时的语句最好使用长格式时间,否则会出现“2000”年问题。希望答案会对你有帮助。
    
    seashell.gifcyy的意见:
    这个问题好多人都遇到过,我的解决办法是在ACCESS中:"Select * From 表 1 Where 进 货 时 间 >=#" & format(日期变量,"yyyy-mm-dd") & "#"
    不需做其他改变,应该会OK啦。如果是SQL SERVER,,则需要将#改成',无论长格式或短格式都通用的,我试过了!
    
    seashell.gifyubin的意见:
    我也遇到过类似的问题,用上面的方法,加##,会出现错误,可能这种方法只适合MS Jet引擎。后来我发现如果用单引号把日期括起来,就可以实现。如下:select * from Table1 where Time between '07/01/2001' and '08/01/2001'
    注:时间字段用datetime类型'mm/dd/yyyy'格式存储。其他方式没试过。
    
    seashell.gif楚禹的意见:
    这个问题我也遇到过我的解决方法是加个数据类型转换函数,如select * from tablename where(日期>cdate('2003-02-01'))
    结果都是正确的!
    
    seashell.gifLuckyLu的意见:
    我在调试程序时也遇到相同的问题,其解决办法是把VB时间转换为SQL时间格式:#02/01/25#转换为#01/25/02#。
    
    seashell.gif卢志渊的意见:
    以上问题我的做法是把日期时间转化成SQL日期格式,直接比较就行了。在Delphi下如有TDateTime型变量MyTime,SQL语句可这样写:s:=Format('select*from table1 where 进货时间 >= %f',[MyTime]),VC下可用COLEDateTime类,方法相同。VB我不太熟悉,想必也有类似的时间类型。这个方法还有一个好处就是可以将查询时间精确到时分秒,我试过,用前面说过的方法都达不到这样的效果。
    
    零度。COM问: 如果我的ACCESS数据库里的日期格式为(YYYY-MM-DD HH-MM-SS)怎么办?日期和时间并存在一个字段里,我的查询语句:rs.open "select date(updatetime) from imgbook where #updatetime#=#2003-7-30#",conn,1,1
    不起任何作用,提取不了真实数据
    jackew答:去掉updatetime前后的#号,如:
    rs.open "select date(updatetime) from imgbook where updatetime = # " & cdate("2003-7-30 15:30:20") & "#",conn,1,1
    调适过了,ok。

转载于:https://www.cnblogs.com/CB/archive/2006/02/21/335065.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值