关于时间字段的查找(使用TQUERY控件)(150分)

  • 主题发起人 主题发起人 pcconey
  • 开始时间 开始时间
P

pcconey

Unregistered / Unconfirmed
GUEST, unregistred user!

最近在编一数据库应用软件时在关于日期的查询和录入方面遇到了问题,
还请的各位高手帮忙解决一下:
1、
数据库sl.DB有这样几个字段:编号(+)、登记日期(Date)、名称(Alpha)、数量(Number)
使用SQL语句进行日期查询,代码如下:
with query1do
begin
close;
sql.Clear;
sql.Add('Select 登记日期, 名称, 数量 form "sl.DB" Sl ');
sql.Add('Where 登记日期=:djrq');
ParamByName('djrq').AsDate:=StrToDate(edit1.Text);
open;
end;
可是在运行时却总是报错,请问这个SQL语句到底应该怎样写?
2、我的登记日期字段中保存的日期都是如“00-5-1”这样的格式,
请问怎样才能保存为“2000-5-1”格式。另外在显示时怎样才能
显示成“2000-5-1”这样的格式。
3、在Edit1.Text中正确的日期格式是怎样写的。
 
1、运行时报什么错?
2、在控制面板->区域设置->把日期设置成4位。
3、正确格式是:2000-01-03。
 
format('yyyy-mm-dd',date)
 
1.beign
//分解当前日期为年月日
decodedate(date,year,month,day);
with query1do
begin
close;
sql.clear;
sql.add('select * from demo.db where birthday="'+inttostr(month)+'/'
+inttostr(day)+'/'+inttostr(day)+'"');
execsql;
end;
end;
总之要点是最后生成的SQL语句为
select * from demo.db where birthdat="mm/dd/yyyy"的形式
2.用掩码,在永久字段中设置掩码
然后在Formcreate中加
DateSeparator := '.';
longdateformat:='YYYY.MM.DD';
shortdateformat:='YYYY.MM.DD';
var
year,month,day:word;
 
1.with query1do
begin
close;
sql.Clear;
sql.Add('Select 登记日期, 名称, 数量 form "sl.DB" Sl ');
sql.Add('Where 登记日期=:djrq');
ParamByName('djrq').Value:=StrToDate(edit1.Text);
open;
end;
2. DateSeparator := '-';
longdateformat:='YYYY-MM-DD';
shortdateformat:='YYYY-MM-DD';
3. 照着你自定义的格式写啦!


 
CurrencyDecimals:=4
 
cAkk: 小心别误人子弟了. ^_^ 你说的那东西是金融数字中小数点后保存几位. ^_*
应该是ShortDateFormat:='yyyy-mm-dd';
对日期时间的sql语句比较, 通常是把时间转换成字符串, 然后直接比较,
利用sql中的隐式数据转换, 比如:
登记日期='05/20/2000';
而字符串的格式应该是根据数据库中的定义的, 一般来说都是mm/dd/yyyy格式的.
第三点要注意的就是BDE的设置中, 应该设成/是日期分隔符, 并且设置4位的年
为true
此外, 根据你的程序看, 好象应该是strtodate(edit1.text)有问题, 是不是
edit1.text的输入格式不对? 试试看用mm/dd/yyyy方式输入, 而且设个断点在
sql.clear;, 然后单步跟踪一下看看到底出什么错.
 
DateSeparator := '-';

shortdateformat:='YYYY-MM-DD';
with query1do

begin
//edit1.Text-->'YYYY-MM-DD'
close;

sql.Clear;
sql.Add('Select 登记日期, 名称, 数量 form "sl.DB" Sl ');
sql.Add('Where 登记日期=:djrq');
ParamByName('djrq').Asstring:=edit1.Text;

open;
end;
试试看。
 
时间真麻烦
 
用TDateTimePicker控件选择日期
formatdatetime('yyyy-mm-dd',DateTimePicker.date)
 
Hello:
关于你的:
第一个问题,应该按数据表的格式写(比如:00-5-1)
第二个问题,只要改变Windows 的“区域设置”就行了(在“控制面板”中)
第三个问题,你可以考虑用TMaskEdit控件实现!
 
应该是StrToDate(edit1.Text)出的错(格式不对),用TDateTimePicker控件轻松
搞定
 

问题解决了,最终代码如下:
DateSeparator := '-';

shortdateformat:='YYYY-MM-DD';
with query1do

begin
//edit1.Text-->'YYYY-MM-DD'
close;

sql.Clear;
sql.Add('Select 登记日期, 名称, 数量 from "sl.DB" Sl ');
sql.Add('Where 登记日期=:djrq');
ParamByName('djrq').AsDate:=StrToDate(edit1.Text);
open;
end;
Edit1.text中输入格式为:2000-5-1
这样写就不必去修改控件面板中的“区域设置”了。
另附:在提出问题时把语句中的from错写成了form
~~~~ ~~~~~
 
多人接受答案了。
 
哎,还有一个简单的办法,就是在控制面板-区域设置-日期里自己定义日期显示格式
dd/mm/yyyy(自己输入)以及分割符'/'(自己输入),那么系统时间就是dd/mm/yyyy
形式,用日期空件取得的输入值也是这样,就可以直接拿过来查询了
 

Similar threads

后退
顶部