|
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,211
|
|||||||||||||||||||||
Фильтрация по дате и времени18.12.2013, 18:38. Показов 2791. Ответов 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
Фильтрация по дате Фильтрация по дате
Фильтрация по дате Фильтрация по дате Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 27.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 27.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 27.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 25.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 25.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|