2015-08-31 5 views
-2

Как использовать TDateTimePicker с форматом времени (час: минута: секунда)?
Я попробовал этот код:Как использовать datetimepicker на Delphi 7

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'); 

, но те не будут работать, помочь мне исправить их.
Я использую SQLYog для базы данных MySQL.

UPDATE

@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; 
+0

Узнайте, как использовать параметры, и вы можете потерять это формат ада. Ну, возможно, из-за некоторых осложнений СУБД через ADO *, насколько я помню (вы, кажется, используете MySQL и, вероятно, ADO?). – TLama

+0

Что такое * Sql.text * здесь, то есть от компонента Delphi, который вы используете? Что SqlYog имеет отношение к вопросу? Пожалуйста, измените свой вопрос дальше. –

+0

ya, я использую SQL.text для вставки, обновления и выбора базы данных. im не использует ADO, но я использую MyQuery Access. это другое? Потому что я все еще изучаю эту вещь программирования. –

ответ

0

я т уверен, что ваш точный requirement.ill попытаться помочь вам.

I) Если вы хотите сравнить дату в DateTimePicker против даты от даты и времени поля в таблице,

SQL.Add (формат ("выберите * из имя_таблицы где литая ([my_date_time_var] в качестве даты) между% s и% s ', [Quotedstr (FormatDateTime (' MM/DD/YYYY ', (datepicker1.Date))), Quotedstr (FormatDateTime (' MM/DD/YYYY ', (datepicker2.Date)))]))

II) Если вы хотите сравнить время даты в DateTimePicker против времени даты поля datetime в таблице,

SQL.Добавить (формат ('select * from tablename, где my_date_time_var между% s и% s', [Quotedstr (FormatDateTime ('MM/DD/YYYY HH: MM: SS', (datepicker1.DateTime))), Quotedstr (FormatDateTime (' MM/DD/YYYY HH: MM: SS ', (datepicker2.DateTime)))]));

III) Если вы хотите сравнить время в DateTimePicker против времени от даты и времени поля в таблице,

SQL.Add (формат ("выберите * из имя_таблицы где литая ([my_date_time_var] как время) между% s и% s ', [Quotedstr (FormatDateTime (' HH: MM: SS ', (datepicker1.time))), Quotedstr (FormatDateTime (' HH: MM: SS ', (datepicker2.Time)))]))

Пожалуйста, дайте мне знать, если ваши требования не совпадают.

+0

wah, спасибо! уже решена. я накладываю слишком много «и» на код. спасибо, что сообщили мне @Binitta Mary. –

+0

у вас есть ошибки в вашем SQL: ** 1.) ** ''select * из tablename, где cast ([my_date_time_var] как время) ...' 'не будет работать в MySql. ** 2.) ** 'где .... между% s и% s ', ... (FormatDateTime (' MM/DD/YYYY HH: MM: SS ', (....) ...' также не работает. –

+0

Извините, я не знаю, что вы работаете с MySQL ... Я дал вам запрос MSSQL в качестве примера. Я надеюсь, что создание будет работать для вас. –

1

Ваш запрос неправильно

  • и имя_поля слишком много

укорочен с данными

НЕ OK

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

OK

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; 
+0

Да, вы правы. я поставил «и» слишком много. спасибо @ moskito-x –

+0

@WirahAryaMardjani: Можете ли вы рассказать мне, почему у вас есть вопрос, который проверяется, чтобы быть правильным, не упоминает проблему с неправильными ** и **? –

Смежные вопросы