zoukankan      html  css  js  c++  java
  • SQL查询日期条件则无法返回正常结果

    SQL查询日期条件则无法返回正常结果
        操作系统:win98
        编程工具:VB6+mssql
        问题:我有一SQL数据库,其中有一表中有一字段:进货时间 为短日期型,在SQL下对该字段进行查询无任何问题,但用VB+ADO查询则无法返回正常结果。比如我在VB中用SQL语句 Select * From 表1 Where 进货时间>='2000-10-12' ,则返回所有记录,而不论条件日期为那一天,如果用<'2000-10-12'则无任何记录返回,不知何故?
        水平: 刚入门(谷新生)
       
        在查询的时候,使用下列语句是正确的:
         SELECT * FORM 表一 WHERE 进货时间>=#2000-10-12#
        查询时的语句最好使用长格式时间,否则会出现“2000”年问题。希望答案会对你有帮助。
        
        cyy的意见:
        这个问题好多人都遇到过,我的解决办法是在ACCESS中:"Select * From 表 1 Where 进 货 时 间 >=#" & format(日期变量,"yyyy-mm-dd") & "#"
        不需做其他改变,应该会OK啦。如果是SQL SERVER,,则需要将#改成',无论长格式或短格式都通用的,我试过了!
        
        yubin的意见:
        我也遇到过类似的问题,用上面的方法,加##,会出现错误,可能这种方法只适合MS Jet引擎。后来我发现如果用单引号把日期括起来,就可以实现。如下:select * from Table1 where Time between '07/01/2001' and '08/01/2001'
        注:时间字段用datetime类型'mm/dd/yyyy'格式存储。其他方式没试过。
        
        楚禹的意见:
        这个问题我也遇到过我的解决方法是加个数据类型转换函数,如select * from tablename where(日期>cdate('2003-02-01'))
        结果都是正确的!
        
        LuckyLu的意见:
        我在调试程序时也遇到相同的问题,其解决办法是把VB时间转换为SQL时间格式:#02/01/25#转换为#01/25/02#。
        
        卢志渊的意见:
        以上问题我的做法是把日期时间转化成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。
  • 相关阅读:
    《浪潮之巅》读后感
    学习进度表
    学习进度表
    兴趣问题清单
    第六周周结
    价值观作业
    学习进度表
    第三次作业(问卷调查)
    第五周(生成动态表格)
    【Other】LanProxy内网穿透
  • 原文地址:https://www.cnblogs.com/CB/p/335065.html
Copyright © 2011-2022 走看看