ADOQuery返回时间值的遇到了困难,请各位富翁!(50分)

  • 主题发起人 主题发起人 gmwing
  • 开始时间 开始时间
G

gmwing

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL SERVER2000中,我在表中定义了一字段为datatime类型,但我在赋值时只赋予时间值(如 17:53:40),
当我在DELPHI中使用ADOQUERY查询返回该值时,总是返回多了此年月日的数字(如:1899-12-30 17:53:40),
其实我只想返回这字段的值是17:53:40。不知道如何解决?
with datamodule1.adoquery1 do
begin
close;
sql.clear;
sql.add('select hctime from chcdjb where hcdate=:m_hcdate');
parameters[0].Value:=datetimepicker1.Date;
open;
end;
 
用:FormatDateTime函数就可以了。
 
FormatDateTime函数是怎么样用的?
 
查相关的帮助不就OK了,学习就要自已多看帮助或相关书籍,要不怎能学到东西
 
取日期:FormatDateTime('yyyy-mm-dd', Now)
取时间:FormatDateTime('hh:nn:ss', Now)
Now为你要取得的TDateTime类型字段值
 
试试 取 time 不取 date
 
有下面几种方法:
1.在SQL端
with datamodule1.adoquery1 do
begin
close;
sql.clear;
sql.add('select datename(Hour,hctime)'+'+'':''+'+'datename(Minute,hctime)'+'+'':''+'+'datename(Minute,hctime) as hctime from chcdjb where hcdate=:m_hcdate');
parameters[0].Value:=datetimepicker1.Date;
open;
end;
2.使用FormatDateTime
var
s: String;
datetime: TDateTime;
begin
datetime := adoquery1.FieldByName('hctime').AsDateTime;
s := FormatDateTime('hh:mm:ss', datetime);
ShowMessage(s);
end;
3.最简单的方法
var
datetime: TDateTime;
begin
datetime := adoquery1.FieldByName('hctime').AsDateTime;
ShowMessage(TimeToStr(datetime));
end;

看个人爱好吧
 
我的源代码是这样:
with datamodule1.adoquery10 do
begin
close;
sql.clear;
sql.add('select dh,cp,sj,qsr,hctime,bz from chcdjb where hcdate=:m_hcdate');//hctime是我想取回为时间值,如17:53:20
parameters[0].Value:=strtodate(datetostr(datetimepicker1.Date)); //我也不知道为什么要用strtodate(datetostr(datetimepicker1.Date))才能正确按日期查找?
open;
end;
但最后datamodule1.adoquery10中的hctime字段返回的是:1899-12-30 17:53:20。其实在SQL SERVER2000中)hctime字段中的值只为17:53:20
不知道如何解决才能只返回正确的时间值17:53:20?
 
var str:string;

str:=' select .....from ...where ....';
str:=str+ ' and a.ShipDate>='+''''+Datetimetostr(datetimepicker1.date)+''''+
' and a.ShipDate<='+''''+Datetimetostr(datetimepicker2.date)+'''';
 
sql.add('
select substring(cast(hctime as varchar(50)),len(cast(hctime as varchar(50)))-7,8) from chcdjb where hcdate=:m_hcdate');
parameters[0].Value:=datetimepicker1.Date;
返回字符型行不行?

 
Select convert(varchar,getdate(),108) as 当前时间
Go
 
我问题的重点是:
如何解决才能只返回正确的时间值17:53:20?
急~~~~~~~~~~~~~~~~~~~~~~~~~~
 
简单
procedure TStatusBarFrame.TimerTimer(Sender: TObject);
var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
lStr:string;
begin

Present:= Now;
DecodeDate(Present, Year, Month, Day);
DecodeTime(Present, Hour, Min, Sec, MSec);
lStr:=' '+IntToStr(Year)+'年'+IntToStr(Month)+'月'+IntToStr(Day)+'日'+' ';

if Hour < 10 then
lStr:=lStr+'0'+IntToStr(Hour)+':'
else
lStr:=lStr+IntToStr(Hour)+':';

if Min < 10 then
lStr:=lStr+'0'+IntToStr(Min)+':'
else
lStr:=lStr+IntToStr(Min)+':';

if Sec < 10 then
lStr:=lStr+'0'+IntToStr(Sec)
else
lStr:=lStr+IntToStr(Sec);

lStr:=lStr+' '+GetWeekName(DayofWeek(Present));
StatusBar.Panels[2].Text:='本地时间: ' + lStr;
SetStatusPanelText(1,PompDm.EmpName);
end;
 
改数据库结构可不可以?
 
你看了DELPHI的相关帮助了吗?它如是说:

当你把日内容填为全0时,那表示它默认的时间:1899-12-31 24:00:00
该清楚了吧。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部