Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сделать запрос на sql-к полю datetime 
:(
    Опции темы
djmix777
Дата 30.11.2014, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



Код

Adoquery1.sql.add('select F1,F2,F3,F4,F5,F6 from worktime.csv ');
             Adoquery1.sql.add( ' where F2=' + label9.Caption+'');
                           Adoquery1.sql.add('group by F1,F2,F3,F4,F5,F6' );
                           Adoquery1.active := true;


так изначально было и работает конечн:

сейчас надо по F1 (столбец со значениями DATETIME) отобрать 

думал что то типа этого
Код

Adoquery1.sql.add('select F1,F2,F3,F4,F5,F6 from worktime.csv ');
              Adoquery1.sql.add( ' where F1>=''18.11.2014 17:30:00'' ');
              Adoquery1.sql.add( 'AND F2=' + label9.Caption+' ');
              Adoquery1.sql.add('group by F1,F2,F3,F4,F5,F6' );
              Adoquery1.active := true;


выходит ошибка скрин во вложении.

сколько смотрел , я так понимаю нужно поля разделять по формату, потом запрос делать? или как?

потом уже буду думать как сгруппировать оставшиеся данные.
а то если скопом то всё в word перевожу отчёт такой на 400 страниц получается....

ещё один вариант попробовал
Код

Adoquery1.sql.add('select F1,F2,F3,F4,F5,F6 from worktime.csv ');
Adoquery1.sql.add( ' where F1 BETWEEN '+ edit4.text+' AND ' + edit6.text+' AND ');
Adoquery1.sql.add( 'datepart(HOUR, F1) BETWEEN "17" AND "23" AND');
Adoquery1.sql.add( 'datepart(MINUTE, F1) BETWEEN "30" AND "59" ');


кто нить сможет сказать? как правильно? Спасиб.

Это сообщение отредактировал(а) djmix777 - 30.11.2014, 16:16

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  2014_11_30_121903.jpg 16,61 Kb
PM MAIL   Вверх
djmix777
Дата 30.11.2014, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



ещё один файлик с последней ошибкой с последнего кода

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  2014_11_30_170150.jpg 31,63 Kb
PM MAIL   Вверх
djmix777
Дата 30.11.2014, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



вот примерн то что представляет из  себя таблица, я фильтрую по человеку поле F2 и хочу научиться фильтровать по полю F1



Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  2014_11_30_181512.jpg 200,96 Kb
PM MAIL   Вверх
Misha_White
Дата 1.12.2014, 04:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 25.4.2007
Где: Кодинск

Репутация: нет
Всего: 1



В Oracle  например:
Код

SELECT F1
FROM table1
WHERE
F1=TO_DATETIME(p_date, 'DD.MM.YYYY HH24:MI:SS')


p_date IN VARCHAR2
--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
superVad
Дата 4.12.2014, 23:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



djmix777, если не хочется морочиться с форматом, то может лучше использовать параметры?
Ну или документацию к СУБД почитать.
PM MAIL   Вверх
Misha_White
Дата 5.12.2014, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 25.4.2007
Где: Кодинск

Репутация: нет
Всего: 1



Цитата(djmix777 @ 30.11.2014,  23:11)
думал что то типа этого
Код

Adoquery1.sql.add('select F1,F2,F3,F4,F5,F6 from worktime.csv ');
              Adoquery1.sql.add( ' where F1>=''18.11.2014 17:30:00'' ');
              Adoquery1.sql.add( 'AND F2=' + label9.Caption+' ');
              Adoquery1.sql.add('group by F1,F2,F3,F4,F5,F6' );
              Adoquery1.active := true;

У него из csv данные тянутся. Хз, таким не занимался извратом.
Вот несколько мыслей.

У тебя тут дата в двойном апострофе, а не в кавычках.
Так попробуй.
Код

Adoquery1.sql.add('select F1,F2,F3,F4,F5,F6 from worktime.csv ');
              Adoquery1.sql.add( ' where F1>="18.11.2014 17:30:00" ');
              Adoquery1.sql.add( 'AND F2=' + label9.Caption+' ');
              Adoquery1.sql.add('group by F1,F2,F3,F4,F5,F6' );
              Adoquery1.active := true;


Ну и еще, попробуй в среде разрнаботки вбить полностью запрос в ADOQuery.SQL, а затем Active перевести в True.
Думаю поймёшь где косяк.

Еще один варинат. Вместо '+EditText.Text+' Использовать '+DateTimeToStr(DateTimePicker.DateTime)+'

Это сообщение отредактировал(а) Misha_White - 5.12.2014, 07:46
--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
AndreyZ53
Дата 5.12.2014, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 22.8.2008

Репутация: нет
Всего: 2



Попробуйте так 

'...F1>='+''''+'19.01.2014'+''''....

Должно прокатить

Это сообщение отредактировал(а) AndreyZ53 - 5.12.2014, 09:59
--------------------
https://itbases.ru/
PM MAIL WWW Skype   Вверх
baldina
Дата 5.12.2014, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



гадаете на кофейной гуще...
1. форматы даты/времени: https://ru.wikipedia.org/wiki/ISO_8601
2. покажите схему (содержимое Schema.ini)



PM MAIL   Вверх
djmix777
Дата 12.12.2014, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



Уважаемые формучане))  smile   Спасиб что обсуждаете) я чесн слово не думал что обсуждение будет ещё. сегодня вечером погляжу, попробую вышесказанное, и отвечу некоторым товарищам!! 

Это сообщение отредактировал(а) djmix777 - 12.12.2014, 15:08
PM MAIL   Вверх
djmix777
Дата 13.12.2014, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



Цитата(baldina @ 5.12.2014,  10:39)
гадаете на кофейной гуще...
1. форматы даты/времени: https://ru.wikipedia.org/wiki/ISO_8601
2. покажите схему (содержимое Schema.ini)

Код

[worktime.csv]
ColNameHeader=False
Format=Delimited(;)

PM MAIL   Вверх
baldina
Дата 13.12.2014, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



PM MAIL   Вверх
superVad
Дата 14.12.2014, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Т.е. вариант, использовать параметры не подошел?
PM MAIL   Вверх
djmix777
Дата 15.12.2014, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



Цитата(superVad @ 14.12.2014,  17:09)
Т.е. вариант, использовать параметры не подошел?

в связи с тем что пример с параметрами не видал, можете подкинуть мыслю? Спасибо. остальное всё перепробовал. 

p.s. про схему ини ещё не поборол
PM MAIL   Вверх
superVad
Дата 15.12.2014, 23:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Цитата(djmix777 @  15.12.2014,  17:08 Найти цитируемый пост)
в связи с тем что пример с параметрами не видал, можете подкинуть мыслю? Спасибо. остальное всё перепробовал. 

Как то так, но лучше погуглить: делфи запросы с параметрами или ADO Parameters.
Код

  ADOQuery1.SQL.Text :=
    'select F1, F2, F3, F4, F5, F6' + sLineBreak +
    'from worktime.csv' + sLineBreak +
    'where F1 >= :F1 AND F2 = :F2' + sLineBreak +
    'group by F1, F2, F3, F4, F5, F6';
  ADOQuery1.Parameters.ParamValues['F1'] := EncodeDate(2014, 11, 18) + EncodeTime(17, 30, 0, 0);
  ADOQuery1.Parameters.ParamValues['F2'] := Label9.Caption;

Можно так присваивать если юзать DateTimePicker:
Код

  ADOQuery1.Parameters.ParamValues['F1'] := DateTimePicker1.DateTime;

PM MAIL   Вверх
salik
Дата 6.2.2015, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 28.1.2011

Репутация: нет
Всего: 1



Для начала надо грамотно составить запрос.
Например:
Код

select cast(F1 as datetime) F1 from worktime.csv 
where F1 between STR_TO_DATE(:in_d1, '%d.%m.%Y %H:%i:%s') and STR_TO_DATE(:in_d2, '%d.%m.%Y %H:%i:%s');

Приведение полей к нужным типам позволит рационально использовать индексы, если конично они у вас есть.
Если человек в предыдущем посте правильно обращается к параметрам, тогда:
Код

ADOQuery1.Parameters.ParamValues['in_d1'] := '11.11.2000 00:00:00';
ADOQuery1.Parameters.ParamValues['in_d2'] :='11.11.2050 23:59:59';

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.