|
操作系统: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。 | |