求救!在DELPHI中如何向Personal ORACLE 7.3中传送正确的日期值???100大洋!!(100分)

  • 主题发起人 主题发起人 estray
  • 开始时间 开始时间
E

estray

Unregistered / Unconfirmed
GUEST, unregistred user!
我在DELPHI中要有TQUERY来查询一段其日期字段值界于两个日期中间的纪录,如界于1999年7月到1999年12月之间。
我在界面中用两个文本框让用户输入日期,TQUERY中的SQL为:
‘SELECT * FROM DEMOTABLE WHERE BETWEEN ’+STRTODATE(EDIT1.TEXT)+'AND'+STRTODATE(EDIT2.TEXT)
问题在于,EDIT中日期格式为MM-DD-YYYY,而Personal ORACLE中日期
值格式为:DD-MM-YYYY,更要命的是ORACLE日期中的月份表示要用英文缩写!!
请问大侠有没有简单的方法来实现这个转换?以便SQL能实现???
 
用存储过程吧!
 
用 to_date,ForMatDateTime两个函数
例:
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into sa_prmt_set_book(prmtgroup,prmtname,');
SQL.Add('prmtvalue,dispvalue,bookno,updateby,CREATEDATE) ');
SQL.Add('values('+#39+'帐套参数'+#39+','+#39+'CXPrecision'+#39+',');
SQL.Add(#39+Edit15.text+#39+','+#39+Edit15.Text+#39+',');
SQL.Add(#39+PBookno+#39+','+#39+UserName+#39+',');
SQL.Add('to_date('''+ForMatDateTime('yyyy-mm-dd',CurDate)+''',''yyyy-mm-dd''))');
ExecSQL;
end;
 
你的查询是错误的
具体的做法应是sql.text :=
'SELECT * FROM DEMOTABLE WHERE BETWEEN '+
'TO_DATE('+EDIT1.TEXT +',"MM-DD-YYYY") AND '+
'TO_DATE('+EDIT2.TEXT +',"MM-DD-YYYY")'

 
存储过程是不用了,只是你的格式的问题,
你可以在SQL中使用TO_DATE函数,或者你把你的机器的系统时间格式
设成PO的格式,这是两种方法。
 
干吗需要自己关心日期格式?
用变量, 然后parambyname(....).asdate := 日期
日期格式转换是BDE和ORACLE的client端的事.
 
Another_eYes说的对
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
876
import
I
I
回复
0
查看
589
import
I
后退
顶部