|
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,211
|
|||||||||||||||||||||
Фильтрация по дате и времени18.12.2013, 18:38. Показов 2795. Ответов 8
Метки нет (Все метки)
Скорее всего это продолжение темы “Условие сравнения текущей даты с датой указанной в таблице, что не так? ”.
Создана таблица так: ……………………………
…………………………… Необходимо из неё “вытащить” записи cделанные после заданного времени (в принципе задача сложнее, но у меня не получается фильтрация по времени и дате):
На форумах по Delphi нашёл, что надо заменить тип данных столбца TDateTime на String и осуществлять поиск, сравнивая строки, а не DateTime. Но тогда 18.12.2000 22:12:20 и другие даты, начинающиеся с числа выше 17 будут так же удовлетворять условиям фильтрации. Да и вообще интересно разобраться. Подскажите, как поступить.
0
|
|||||||||||||||||||||
| 18.12.2013, 18:38 | |
|
Ответы с готовыми решениями:
8
Фильтрация по дате Фильтрация по дате |
|
12 / 12 / 3
Регистрация: 09.12.2013
Сообщений: 142
|
|||
| 18.12.2013, 21:59 | |||
|
myFunction{а вот тут уже обозначте откуда берете данные, и чтоб формат был 17.12.2013 22:12:20}
запрос: SELECT MyTab.[Дата_время] FROM MyTab WHERE (((MyTab.[Дата_время])<=myFunction())); возможно в чем-то неправ, подправьте если что, это мое ИМХО)) Добавлено через 15 минут
1
|
|||
|
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,211
|
|||||||||||
| 18.12.2013, 22:04 [ТС] | |||||||||||
|
Первоначально данные вводил через Edit-ы и преобразовывал в формат TDateTime. Пробовал данные брать из DateTimePicker, а затем даже:
T0=Now()-10; Просмотрел советы с других форумов, вот что-то обещающее, но : - второй раз без перезагрузки программы не работает. - фильтрует только по дате, а надо и по дате и по времени.
0
|
|||||||||||
|
12 / 12 / 3
Регистрация: 09.12.2013
Сообщений: 142
|
||
| 18.12.2013, 22:40 | ||
|
TDateTime datetime = ...;
datetime += 1.0 / 24; // сдвигаем на час вперед datetime -= 1.0; // сдвигам на день назад datetime += 7.0; // сдвигаем на неделю вперед datetime = IncMonth( datetime, -1 ); // сдвигаем на месяц назад TDateTime - по сути всего лишь число с плавающей точкой двойной точности, со всеми вытекающими последствиями. То есть , например, для того, чтобы вычислить разницу между двумя датами, достаточно вычесть одно из другого: TDateTime datetime1 = ...; TDateTime datetime2 = ...; double difference = (double)( datetime2 - datetime1 );
1
|
||
|
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,211
|
||||||
| 18.12.2013, 23:17 [ТС] | ||||||
|
Это понятно, просто чтобы не усложнять код при эксперементах я вручную изменял T0 и T1.
Проблема в том, что в таблицу дата и время заносятся в формате TDateTime, а напрямую в SQL-фильтре "WHERE" я не могу указать величину в этом формате. Если бы изменить тип столбеца с TDateTime на double, то наверняка всё заработало бы прекрасно, но тогда при выводе в DBGrid придётся "химичеть", а это будет тормозить открытие базы, да и в Access будет чёрт знает что вместо времени. Добавлено через 8 минут Извиняюсь, забыл. Вот отрывок из кода. Это работает:
0
|
||||||
|
12 / 12 / 3
Регистрация: 09.12.2013
Сообщений: 142
|
|
| 19.12.2013, 00:41 | |
|
ot полученная дата с эдита где вводится от какой даты
do соответственно до какой даты вывести записи и вроде надо юзать .DateTimeString() (он у вас закоментирован T0.DateTimeString()) ADOQuery1->SQL->Text = "select * from таблица where поледатавремя == (ot.DateTimeString() <= do.DateTimeString())"; если вас правильно понял, то по логике запрос должен быть примерно такого вида )
0
|
|
|
12 / 12 / 3
Регистрация: 09.12.2013
Сообщений: 142
|
|||||||
| 19.12.2013, 01:09 | |||||||
0
|
|||||||
|
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,211
|
||||||
| 20.12.2013, 14:17 [ТС] | ||||||
|
Во-первых спасибо всем, кто хотел оказать помощь в решении данного вопроса.
Задачу удалось решить следующим образом:
Ещё хотел бы сказать о компонентах DateTimePicker1-4 (1 и 2 – это дата и время начала поиска, 3 и 4 – соответственно дата и время окончания поиска). Свойство “King” у компонентов работающих с датой установлено в “dtkDate”, со временем – “dtkTime”. Свойство “Time” у компонентов работающих с датой установлено в 0:00:00, а компонентов работающих со временем у DateTimePicker2 - 0:00:01, DateTimePicker4 - 0:00:59. Далее только у DateTimePicker2 и 4 установить свойство “Format=HH:mm” и свойство “Date=0” (появится 30.12.1899). Здесь надо отметить, что если свойства “Time” будут установлены в 0, то при установке “Date=0” будет возникать ошибка. Далее в тексте программы время начала поиска я уменьшаю чуть больше, чем на секунду (-1.15741E-5), а окончания – увеличиваю, чтобы данные записанные в интервале от 00 до 01 сек при начале поиска и от 59 до 59+0,9999…. сек) попадали в интервал поиска. К стати, на каком-то форуме по Delphi встречал, что если задать компоненту TDateTimePicker свойство “Format=dd.MM.yyy HH:mm”, то он будет отображать дату и время. Да, отображает, но считать их не удаётся.
0
|
||||||
| 20.12.2013, 14:17 | |
|
Помогаю со студенческими работами здесь
9
Фильтрация по дате Фильтрация по дате
Фильтрация по дате Фильтрация по дате Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|