【问题标题】:how to use datetimepicker on Delphi 7如何在 Delphi 7 上使用 datetimepicker
【发布时间】:2015-08-31 08:47:07
【问题描述】:

如何将TDateTimePicker与时间格式(时:分:秒)一起使用?
我试过这段代码:

Sql.text:= ('select * from namatabel where namafield between '+quotedstr(formatdatetime('yyyy/mm/dd', datetimepicker1.date))+' and '+quotedstr(formatdatetime('yyyy/mm/dd', datetimepicker2.date))+' and field order by field ASC');

还有这段代码:

Sql.text:= ('select * from tablename where fieldname between '+quotedstr(formatdatetime('yyyy/mm/dd hh:mm:ss', datetimepicker1.date))+' and '+quotedstr(formatdatetime('yyyy/mm/dd hh:mm:ss', datetimepicker2.date))+' and fieldname order by fieldname ASC');

还有这段代码:

Sql.text:= ('select * from tablename where fieldname between '+quotedstr(formatdatetime('yyyy/mm/dd hh:mm:ss', datetimepicker1.datetime))+' and '+quotedstr(formatdatetime('yyyy/mm/dd hh:mm:ss', datetimepicker2.datetime))+' and fieldname order by fieldname ASC');

但是这些都行不通,请帮我纠正它们。
我正在对 MySQL 数据库使用 SQLYog

更新

@Jens Borrisholt 我之前尝试过这段代码,但它也不起作用

SQL.Add('SELECT meteran.kd_meter as no,kamar.nama,meteran.waktu,meteran.meter '+
        'FROM meteran,kamar WHERE kamar.idkamar = meteran.idkamar AND meteran.waktu BETWEEN :tgl1 and :tgl2 and waktu group by waktu asc');
ParamByName('tgl1').AsString:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.DateTime);
ParamByName('tgl2').AsString:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.DateTime); end;
DBGrid2.DataSource.DataSet:=MyQuery2;

【问题讨论】:

  • 学习如何使用参数,你可能会失去这种格式的地狱。好吧,据我所知,您可能是因为某些 DBMS 通过 ADO 并发症(您似乎正在使用 MySQL,并且可能是 ADO ?)。
  • 这里的 Sql.text 是什么,也就是说,它来自您正在使用的 Delphi 组件吗? SqlYog 与这个问题有什么关系?请edit您的问题进一步。
  • 是的,我使用 SQL.text 插入、更新和选择数据库。我没有使用 ADO,但我使用 MyQuery Access。有什么不同吗?因为我还在学习这个编程的东西。
  • 您的问题与日期/时间选择器控件无关。了解原因会让您受益。
  • 顺便说一句,Delphi 字符串赋值语句中的字符串值不需要括号。

标签: mysql delphi date datetime sqlyog


【解决方案1】:

您的查询错误

  • 字段名太多了

用数据缩短

不行

Sql.text:= 'select * from tablename where fieldname between "2006-06-11"'+
           'and "2006-06-19" and fieldname order by fieldname ASC';

好的

Sql.text:= 'select * from tablename where fieldname between "2006-06-11" '+
           'and "2006-06-19" order by fieldname ASC';

带有数据的有效 SQL 示例

select * from auktionen where auktionende between '2006-06-11' and '2006-06-19' order by auktionende ASC;

全部与您的代码一起。没有和 waktu

BETWEEN :tgl1 and :tgl2 and waktu

MyQuery2.Close;
MyQuery2.SQL.Text := 'SELECT meteran.kd_meter as no,kamar.nama,meteran.waktu,meteran.meter '+
        'FROM meteran,kamar WHERE kamar.idkamar = meteran.idkamar'+
        ' AND meteran.waktu BETWEEN :tgl1 and :tgl2'+
        ' group by waktu';
MyQuery2.ParamByName('tgl1').AsString:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.Date);
MyQuery2.ParamByName('tgl2').AsString:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.Date);
DBGrid2.DataSource := DataSource1;
MyQuery2.Open;

【讨论】:

  • 是的,你说得对。我把“和”放得太多了。谢谢@moskito-x
  • @WirahAryaMardjani : 你能告诉我为什么你有一个问题被检查为正确,没有提到不正确的问题 and 吗?
【解决方案2】:

我不确定您的具体要求是什么。我会尽力帮助您。

I)如果您想将 datetimepicker 的 date 与表中 datetime 字段的 date 进行比较,

SQL.Add(format('select * from tablename where cast ([my_date_time_var] as date) between %s and %s ' ,[Quotedstr(FormatDateTime('MM/DD/YYYY',(datepicker1.Date)) ),Quotedstr(FormatDateTime('MM/DD/YYYY',(datepicker2.Date)))]))

II)如果您想比较日期时间选择器的日期时间与表格中日期时间字段的日期时间

SQL.Add(format('select * from tablename where my_date_time_var between %s and %s' ,[Quotedstr(FormatDateTime('MM/DD/YYYY HH:MM:SS',(datepicker1.DateTime))), Quotedstr(FormatDateTime('MM/DD/YYYY HH:MM:SS',(datepicker2.DateTime)))]));

III)如果您想比较 datetimepicker 的 时间 和表中 datetime 字段的 时间

SQL.Add(format('select * from tablename where cast ([my_date_time_var] as time) between %s and %s ' ,[Quotedstr(FormatDateTime('HH:MM:SS',(datepicker1.time)) ),Quotedstr(FormatDateTime('HH:MM:SS',(datepicker2.Time)))]))

如果您的要求不一样,请告诉我

【讨论】:

  • 哇,谢谢!已经解决了。我在代码上放了太多“和”。感谢您让我知道@Binitta Mary。
  • 您的 SQL 中有错误:1.) 'select * from tablename where cast ([my_date_time_var] as time) ...' 在 MySql 中不起作用。 2.) where .... between %s and %s ' , ... (FormatDateTime('MM/DD/YYYY HH:MM:SS',(....)... 也不起作用。
  • 对不起,我不知道您正在使用 MySQL...我以 MSSQL 查询为例。我希望格式化对您有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 2011-04-16
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多