主: Access数据库中有两字段: dtTime1 dtTime2 皆为日期时间型
现求教(1)如何在显示时控制只显示dtTime1中的日期,或者时间,或者
显示日期时间(最好是用SQL语句方式)
(2)窗体中有四个DateTimePicker控件(Dpt1,Dpt2,Dpt3,Dpt4),Dpt1,Dpt2分别为起始时间的日期和时间,Dpt3,Dpt4分别为结束时间的日期和时间。
现在我想用SQL语句查询起始时间到结束时间的数据。
现求教(1)如何在显示时控制只显示dtTime1中的日期,或者时间,或者
显示日期时间(最好是用SQL语句方式)
(2)窗体中有四个DateTimePicker控件(Dpt1,Dpt2,Dpt3,Dpt4),Dpt1,Dpt2分别为起始时间的日期和时间,Dpt3,Dpt4分别为结束时间的日期和时间。
现在我想用SQL语句查询起始时间到结束时间的数据。
如:要将日期显示格式定义成‘YYYY-MM-DD’的话,你可以用以语句
SELECT CONVERT(VARCHAR(10),YOURDATETIMEFIELDNAME,112);
要将日期显示格式定义成‘YYYY-MM-DD HH:NN:SS’的话,你可以用以语句
SELECT CONVERT(VARCHAR(10),YOURDATETIMEFIELDNAME,120);
TRY
CLOSE;
SQL.CLEAR;
SQL.ADD('SELECT * FROM YOURTABLENAME WHERE CONVERTAR,CDATETIMEFIELDNAME,120) BETWEEN :VBEGINDATETIME AND :ENDDATETIME');
PARAMTERS.PARAMBYNAME('VBEGINDATETIME').VALUE:=FORMATDATETIME('YYYY-MM-DD'.DTP1.DATETIME)+' '+FORMATDATETIME('YYYY-MM-DD'.DTP2.DATETIME);
PARAMTERS.PARAMBYNAME('VBEGINDATETIME').VALUE:=FORMATDATETIME('YYYY-MM-DD'.DTP3.DATETIME)+' '+FORMATDATETIME('YYYY-MM-DD'.DTP4.DATETIME);
PREPARED;
OPEN;
EXCEPT
MESSAGEBOX(SELF.HANGLE,'错误内容提示','提示',MB_OK);
EXIT;
END;
StrTime,EndTime:TDateTime;
begin
StaTime:=Dpt1.date+Dpt2.Time;
EndTime:=Dpt3.Date+Dpt4.Time;With Query do
begin
Close;
Sql.Clear;
SQL.Add('select * from TableName where FieldName between :Q1 and :Q2');
paramters.paramByName('Q1').Value:=StaTime;
ParamTers.ParamByName('Q2').Value:EndTime;
Open;
end;
end;
您好!
我使用’SELECT CONVERT(VARCHAR(10),YOURDATETIMEFIELDNAME,112);‘他提示convert函数未定义,对了,还有我用的是ACCESS数据库,是不是跟SQL SERVER用法有所不同,
还有:四个DateTimePicker控件(Dpt1,Dpt2,Dpt3,Dpt4)Dpt1 和Dpt3是日期,Dpt2,Dpt4是时间哦,请再麻烦你改一下哦,谢谢
您好!
var
StrTime,EndTime:TDateTime;
begin
StaTime:=Dpt1.date+Dpt2.Time;
EndTime:=Dpt3.Date+Dpt4.Time;
这样得出的StaTime,和EndTime都是错误的
我是用StaTime:=StrToDateTime(DateToStr(Dpt1.date)+' '+TimeToStr(Dpt2.Time));
时间是死的还是活的啊?
如果是时间段
你可以写成这样
例如时间是10 点:
StaTime:=Dpt1.Date+strTotime('10:00:00')这样写就可以了因为dpt2指定的时间是死的如果你指定的时间是现在那么就可以将now decodeTime
然后再将时间合并到StaTime中
您好!
var
StrTime,EndTime:TDateTime;
begin
StaTime:=Dpt1.date+Dpt2.Time;
EndTime:=Dpt3.Date+Dpt4.Time;
这样得出的StaTime,和EndTime都是错误的
我是用StaTime:=StrToDateTime(DateToStr(Dpt1.date)+' '+TimeToStr(Dpt2.Time));
应该可以的啊
我前两天刚这么写
您好!
谢谢你,第二个问题我已经解决了
Var
tSql:sTring;
tStaTime1:TDateTime;
tEndTime1:TDateTime;
begin
tStaTime1:=StrToDateTime(DateToStr(dtp1.Date)+' '+TimeToStr(dtp3.Time));
tEndTime1:=StrToDateTime(DateToStr(dtp2.Date)+' '+TimeToStr(dtp4.Time));
tSql:='Select sCardID AS 卡号,sCom AS 机号,dtTime1 As 上机时间,dtTime2 As 下机时间,iLength AS 使用时间,cEffect As 上机金额,sType AS 消费方式 From tLogs'
+' WHERE (dtTime2>=:Q1) And (dtTime2<=:Q2)'
+' Order By dtTime2';
Qry1.Close;
Qry1.SQL.Clear;
Qry1.SQL.Add(tSql);
Qry1.Parameters.ParamByName('Q1').Value:=tStaTime1;
Qry1.Parameters.ParamByName('Q2').Value:=tEndTime1;
Qry1.Open;
end;
你能告诉我如何只显示Access日期时间型字段的时间吗,
比如我用
tSql:='Select dtTime1 As DateTimeToTimeStamp(dtTime1) As 上机时间,DateTimeToTimeStamp(dtTime2) As 下机时间 From tLogs'
+' WHERE (dtTime2>=:Q1) And (dtTime2<=:Q2)'
+' Order By dtTime2';
或者
tSql:='Select dtTime1 As FormatDateTime('HH:MM:SS',dtTime1) As 上机时间,FormatDateTime('HH:MM:SS',dtTime2) As 下机时间 From tLogs'
+' WHERE (dtTime2>=:Q1) And (dtTime2<=:Q2)'
+' Order By dtTime2';
都不行,好象错误都是指函数未定义
Var
ComDateTime1: String;
ComDateTime2:String;
begin
ComDateTime1 := DateToStr(Date)+' 0:00:00';
ComDateTime2 := DateToStr(Date)+' 23:59:59';
QueryBody.SQL.Add('select * from ComTable where ((comdate>=:ComDateTime1_) and (ComDate<=:ComDateTime2_)) order by id DESC');
Querybody.Parameters.ParamByName('ComDateTime1_').value := ComDateTime1;
Querybody.Parameters.ParamByName('ComDateTime2_').Value := ComDateTime2;一切OK。我用的是Access2000。
Var
ComDateTime1: String;
ComDateTime2:String;
begin
ComDateTime1 := DateToStr(Date)+' 0:00:00';
ComDateTime2 := DateToStr(Date)+' 23:59:59';
QueryBody.SQL.Add('select * from ComTable where ((comdate>=:ComDateTime1_) and (ComDate<=:ComDateTime2_)) order by id DESC');
Querybody.Parameters.ParamByName('ComDateTime1_').value := ComDateTime1;
Querybody.Parameters.ParamByName('ComDateTime2_').Value := ComDateTime2;用 QUERY:
Var
ComDateTime1: String;
ComDateTime2:String;
begin
ComDateTime1 := FORMATDATETIME('YYYY-MM-DD',DTP1.DATE)' '+FORMATDATETIME('HH:NN:SS',DTP2.TIME);
ComDateTime2 := FORMATDATETIME('YYYY-MM-DD',DTP3.DATE)' '+FORMATDATETIME('HH:NN:SS',DTP4.TIME);
QueryBody.SQL.Add('select * from ComTable where comdate BETWEEN :VSTARTDATETIME AND :VENDDATETIME order by id DESC');
Querybody.PARAMS[0].ASDATETIME := STRTODATETIME(ComDateTime1);
Querybody.PARAMS[1].ASDATETIME := STRTODATETIME(ComDateTime2);
例:
var
datestr:string;begin
datestr:=formatdatetime('yy-mm-dd',dpt1.datetime);
with query1 do
begin
close;
sql.clear;
sql.text:='select * FROM TableName where 字段名 between :A and :B';
paramters.paramByName('A').value:=strTodatetime(dateSTR+' 00:00:00');
paramters.paramByName('B').value:=strTodatetime(dateSTR+' 23:59:59');
open;
end;
end;
FormatDateTime('yyyy-mm-dd',dttime1.Date);
获得时间:
FormatDateTime('hh-mm-ss',dttime1.Time);
SELECT *
FROM t_customer
WHERE idate=2004-6-3;数据没有呢
SELECT *
FROM t_customer
WHERE idate>=2004-6-3;
则,查出,全部的数据啊???????????
另外,我的数据库中字段格式是datetime的,我如何查找某年某月的全部记录呢???
FROM t_customer
WHERE idate>=#2004-6-3#;
datetostr(Date)
timetostr(Time)