涉及日期型字段sql语句如何书写? (30分)

  • 主题发起人 主题发起人 yifeibbs
  • 开始时间 开始时间
不同数据庫,有不同书写格式
 
会不会是ShortDateFormat变量的问题?
 
别人都说得这么明白了,我没得说了。有一点是肯定的,就是
“不同数据庫,有不同书写格式”
 
大家这么关注这个问题,我非常感激!
但是任我用遍了我所有能想到的格式就是不能执行!
这个问题的情况是这样的:在"C:/Program Files/Borland/Delphi6/Bin/dbexplor.exe"
中执行基于日期类型字段条件的查询中出现的;并非在d6执行代码之中。
数据表是paradox7本地数据表,字段类型为date。
在执行此查询语句时提示:“type mismatch in expression”,详细信息是:“BDE
error:11871”。我查找了BDE错误代码11871为类型不匹配。


这个问题我实在是想不通,别人那里可以运行,我这里为什么不能运行?
最后我迫于无奈只好将这个问题带到d6代码中,用日期参数方式解决!
所以说:实际上我的问题还没有解决!
 
同意 Z_JJ (在Sqlsever中)
 
最简单的办法就是用字符型代替日期型字段,适用于所有数据库,而且不影响排序和比
较大小,不过要统一格式(如:yyyy-mm-dd).
 
首先要看你的数据库类型,其次要看你的时间格式是什么。
Access用 #1999-11-11#
BDE 用 '11-11-1999'
MS SQL "1999-11-11"
或者
Access用 #1999.11.11#
BDE 用 '11.11.1999'
MS SQL "1999.11.11"
说不定把‘[red]-[/red]’改为‘[blue].[/blue]’就可以了,祝你好运!
 
涉及到日期和时间的查询,最好使用参数,这样,
日期时间格式就不会影响程序,我的类似代码是这样的:
...
with qryDayReport do
begin
Close
SQL.Clear;
SQL.Add('Select * from tablename where rq>=:BeginDate and rq<=:EndDate');
Parameters[0]:=dtpBeginDate.DateTime;//开始日期设置为dtpBeginDate的日期时间,dtpBeginDate的时间=0:0:0
Parameters[1]:=dtpBeginDate.DateTime;//结束日期设置为dtpEndDate的日期时间,dtpBeginDate的时间=23:59:59
try
Open;
except
end;
end;
 
同意lccc的看法!
另外SQL语句中的日期格式书写与系统区域、格式设置有很大关系。
 
这个问题已经解决,我使用'mm/dd/yy'and'mm/dd/yyyy'方式获得结果。
因为我的问题是关于数据库查询,所以关于参数查询的讨论就不分配分数了(主要是分数少分不过来)
分配不尽合理,请大家谅解!
 

Similar threads

后退
顶部