请教一个日期查询问题 (50分)

  • 主题发起人 dali2000
  • 开始时间
D

dali2000

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]sql.add('select * from tablename where 日期 between #'+datetostr(datetimepick1.date)+'# and #'+datetostr(datetimepick2.date)+'#');
明明库中存在符合查询日期之间的记录,执行起来就是查询不到。不知是何因?请各位高手指点?(我用的是ACCESS库)
奇怪在WIN98运行就不能查询到,在WIN2000中就能。怪!!!!!!

 
我想是不是在日期上有问题
 
sql.add('select * from tablename where 日期 between :StartDate and :EndDate');
AdoQuery1.Parameters.ParamByName('StartDate).Value := Datetimepicker1.Date;
AdoQuery1.Parameters.ParamByName('EndDate).Value := Datetimepicker2.Date;
AdoQuery1.ExecSql;
 
ms sql2000联机帮助:

数字日期格式
Microsoft® SQL Server™ 2000 允许用指定的数字月份指定日期数据。例如,5/20/97 表示 1997 年 5 月的第 20 天,当使用数字日期格式时,在字符串中以斜杠(/)、连字符(-)或句号(.)作为分隔符来指定月、日、年。字符串必须以下面的形式出现:

数字 分隔符 数字 分隔符 数字 [时间] [时间]

下面的数字日期格式是有效的:

[0]4/15/[19]96 -- (mdy)
[0]4-15-[19]96 -- (mdy)
[0]4.15.[19]96 -- (mdy)
[04]/[19]96/15 -- (myd)

15/[0]4/[19]96 -- (dmy)
15/[19]96/[0]4 -- (dym)
[19]96/15/[0]4 -- (ydm)
[19]96/[04]/15 -- (ymd)

当语言被设置为 us_english 时,默认的日期顺序是 mdy。可以使用 SET DATEFORMAT 语句改变日期的顺序,根据所用的语言,它也会影响日期顺序。

对 SET DATEFORMAT 的设置决定了如何解释日期数据。如果顺序和设置不匹配,则该值不会被解释为日期(因为它们超出了范围),或者被错误地解释。例如,根据不同的 DATEFORMAT 设置,12/10/08 能被解释为六种日期的一种。
///
而datetostr()函数得到的字符窜格式是'y-m-d',所以你得不到正确结果!!
 
多人接受答案了。
 
顶部