日期(100分)

G

ggbb

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI 如何在动态SQL语句中使用日期型参数。
 
这得看你用的数据库
在DB2中可以直接用字符串,
在Oracle中可以用ToDate函数。
 
QUERY.CLOSE;
QUERY.SQL.CLEAR;
QUERY.SQL.ADD('SELECT * FROM YOURTABLE WHERE YOURDATE > :D1');
QUERY.PARAMENTERS[0].VALUE := NOW;
QUERY.PERPARE;
QUERY.OPEN;
 
d5下:


QUERY1.CLOSE;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT * FROM YOURTABLE WHERE YOURDATE > :d1 or YOURDATE > :d2 ');
Query1.Params[0].AsTime := StrToTime(yourvaluestr1);
Query1.Params[1].AsDateTime := StrToDateTime(yourvaluestr2);
QUERY1.OPEN;

 
你不妨试一试#,很有用的!
 
不同数据库产品的日期数据类型会有不同,自己查一查相关的数据库操作手册
 
直接用'2000-02-01 01:00:00:0000'可以吧。
 
QUERY.CLOSE;
QUERY.SQL.CLEAR;
QUERY.SQL.ADD('SELECT * FROM YOURTABLE WHERE YOURDATE > :D1');
QUERY.PARAMBYNAME('D1').ASDATETIME := NOW;
QUERY.PERPARE;
QUERY.OPEN;

或者

QUERY.CLOSE;
QUERY.SQL.CLEAR;
QUERY.SQL.ADD('SELECT * FROM YOURTABLE WHERE YOURDATE > :D1');
QUERY.PARAMBYNAME('D1').ASSTRING := '2000-1-1 12:00:00';
QUERY.PERPARE;
QUERY.OPEN;

均可
 
对PARADOX
SQL.Text:='Select * From "Table.DB" Where YourParam=:???'
设参数类型为Date.
ParamByName('...').asDate:=Now;
对ACCESS
SQL.Text:='Select * From "Table.DB"
Where DateField=DateValue:)p_StartDate)'
参数类型为String.
PAramsByName('..').asString:=Format('mm/dd/yyyy',Date);
 
in MSSQL server, u can use a build-in function called "Convert" that
convert a string to datetime. more info in SQL on-line book.
 
可用各个数据库内建的日期函数
 
多人接受答案了。
 
顶部