С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 30.06.2022
Сообщений: 93

Поиск по частичному совпадению в поле с типом TIMESTAMP

26.04.2024, 17:47. Показов 1057. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Имеется таблица, таблица содержит поле даты, типа TIMESTAMP, как сделать поиск по частичному совпадению?
Под частичным совпадением я имею в виду:
Code
1
2
3
4
5
6
Например имеет запись типа: 11.04.2024 16:48:32
При вводе в строку поиска: 'текст' = ничего не находим.
При вводе в строку поиска: 'dfsdf' = ничего не находим.
При вводе в строку поиска: '11.04' = находим 11.04.2024 16:48:32.
При вводе в строку поиска: '11.04.2024 16' = находим 11.04.2024 16:48:32.
При вводе в строку поиска: '16:48' = находим 11.04.2024 16:48:32.
Как правильно построить запрос?
Составил такой запрос:
Delphi
1
SQL:='SELECT * FROM table0 WHERE CAST(table0_date AS VARCHAR(100)) LIKE ('+QuotedStr('%11.04%')+')';
Но не находит (

Добавлено через 3 часа 57 минут
Если ввести 04-11, то находит. Работает если только вводить в формате год-месяц-день и т.д.
Как применить формат при поиске 11.04.2024 16:48:32 dd.mm.yyyy hh:mm:ss?
Что за дела?
Delphi
1
SQL:='SELECT * FROM table0 WHERE CAST(table0_date AS VARCHAR(100)) LIKE ('+QuotedStr('%04-11%')+')';
Добавлено через 1 минуту
У меня запись в таблице имеет вид:
Code
1
11.04.2024 16:48:32
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2024, 17:47
Ответы с готовыми решениями:

Поиск в БД по частичному совпадению
как сделать что бы он искал по 1-вой букве помогите дописать. procedure TForm3.Button1Click(Sender: TObject); begin if...

Поиск по частичному совпадению
Подскажите, имеется два файла формата txt в первом файле набранный текст, а во втором набор ключевых слов, необходимо найти и выделить все...

Поиск по частичному совпадению
Есть БД. В ней нужно организовать поиск по частичному совпадению данных, то есть в Edit в событие OnChange вбивается: AnsiString s5; ...

8
Native x86
Эксперт Hardware
 Аватар для quwy
6856 / 3789 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
26.04.2024, 19:37
Цитата Сообщение от DobryaKaktus Посмотреть сообщение
таблица содержит поле даты, типа TIMESTAMP
БД какая?

Цитата Сообщение от DobryaKaktus Посмотреть сообщение
Работает если только вводить в формате год-месяц-день и т.д.
Потому что конструкция CAST(table0_date AS VARCHAR(100)) не предполагает пользовательского форматирования и сервер использует тот формат, который у него по-умолчанию.

Цитата Сообщение от DobryaKaktus Посмотреть сообщение
У меня запись в таблице имеет вид:
Запись типа TIMESTAMP содержит некое число, которое уже потом интерпретируется как дата/время. Так что не имеет оно такого вида нигде, кроме той точки, где происходит вывод на экран.
1
2 / 2 / 0
Регистрация: 30.06.2022
Сообщений: 93
26.04.2024, 22:22  [ТС]
Цитата Сообщение от quwy Посмотреть сообщение
БД какая?
Забыл написать, FireBird 3.0

Добавлено через 4 минуты
Цитата Сообщение от quwy Посмотреть сообщение
сервер использует тот формат, который у него по-умолчанию.
Вот он чёрт
Цитата Сообщение от quwy Посмотреть сообщение
Запись типа TIMESTAMP содержит некое число
Догадывался, спасибо.

Добавлено через 2 часа 26 минут
Что можно сделать?
0
Native x86
Эксперт Hardware
 Аватар для quwy
6856 / 3789 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
26.04.2024, 22:34
Лучший ответ Сообщение было отмечено DobryaKaktus как решение

Решение

Цитата Сообщение от DobryaKaktus Посмотреть сообщение
Что можно сделать?
Можно скомпилировать функцию. Можно собрать дату по частям прямо в запросе:
SQL
1
SELECT * FROM TABLE WHERE (EXTRACT(DAY FROM FIELD)||'.'||EXTRACT(MONTH FROM FIELD)||'.'||EXTRACT(YEAR FROM FIELD)) LIKE '%04.2024%';
1
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
27.04.2024, 01:57
Лучший ответ Сообщение было отмечено DobryaKaktus как решение

Решение

Цитата Сообщение от DobryaKaktus Посмотреть сообщение
Под частичным совпадением я имею в виду:
А запрос типа
SQL
1
beetween :D1 AND :D2
не устроит ОРД?
Где D1 и D2 это датавремя начала и конца нужного периода.
1
 Аватар для Beltar
811 / 427 / 37
Регистрация: 05.05.2022
Сообщений: 2,957
27.04.2024, 08:20
Нет, это слишком правильно, так подвигов не совершить.

Цитата Сообщение от quwy Посмотреть сообщение
Запись типа TIMESTAMP содержит некое число, которое уже потом интерпретируется как дата/время.
Ну так дельфовый TDateTime - это тоже число, обычный Double. И вообще компьютерное время - это число неких временных интервалов от какой-то опорной даты.
И из этого вытекает то, что есть некая дискретность преобразования, и не каждое время, записываемое в строковом виде может быть точно записано в Timestamp. Если формат, скажем, HH:mm:ss:zzz, то точности Timestamp хватит? Я не знаю.
0
2 / 2 / 0
Регистрация: 30.06.2022
Сообщений: 93
27.04.2024, 11:44  [ТС]
Цитата Сообщение от quwy Посмотреть сообщение
Можно скомпилировать функцию. Можно собрать дату по частям прямо в запросе:
Спасибо, добавил ещё процедуру для добавления нулями слева.
Цитата Сообщение от northener Посмотреть сообщение
конца нужного периода.
Сейчас поисковую строку заканчиваю делать, период конечно тоже сделаю. Спасибо.
Цитата Сообщение от Beltar Посмотреть сообщение
Нет, это слишком правильно, так подвигов не совершить.
А кто сказал что поиск по частичному совпадению это неправильно? Где это правило установлено, что дату можно искать только установкой периода? всё зависит от концепции программы, и как раз мне этот функционал понадобился, так как задача того требует.
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
27.04.2024, 13:53
Цитата Сообщение от DobryaKaktus Посмотреть сообщение
А кто сказал что поиск по частичному совпадению это неправильно? Где это правило установлено, что дату можно искать только установкой периода? всё зависит от концепции программы, и как раз мне этот функционал понадобился, так как задача того требует.
По своему вы правы, но ведь метод поиска можно же изменить и получить тот-же результат. Вы сейчас ищете по контексту, что почти исключает возможность использования индексов, но ведь можно же использовать функции работы с датой временем и хотя длина текста такого запроса будет больше, скорость выполнения будет выше, что бывает очень критично для больших баз данных.
0
 Аватар для Beltar
811 / 427 / 37
Регистрация: 05.05.2022
Сообщений: 2,957
27.04.2024, 20:00
Ну т. е. берем каждое значение времени в БД и преобразовываем в строку. Как человек, которому постоянно приходится иметь дело с маленькими БД примерно такого типа время и набор значений, и все это идет с оборудования раз в несколько секунд, а то и чаще годами, так что число записей может достигать десятков, а то и сотен миллионов (да, БД гигов в 30 размером я за большую не считаю, и у меня тут нет единиц оборудования с несколькими сотнями, если не тысячами точек замера с последующим архивированием), я вам скажу, что выбрать из таких объемов хоть что-то можно только при наличии индекса по времени, вы же не только исключаете его использование, но даже усугубили ситуацию конвертацией в строку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2024, 20:00
Помогаю со студенческими работами здесь

Поиск в БД по частичному совпадению в запросе
Подскажите как реализовать поиск в БД по частичному совпадению поискового запроса и строки в БД. Поиск по полному совпадению через SQL...

Поиск значений по частичному совпадению
Добрый день. Заранее благодарю за помощь. Имеется файл, в котором на "листе1" в столбце "А" находятся артикулы изделий, а в...

Поиск в таблице по частичному совпадению
Для поиска использую Table1.Locate('Naz', sEdit1.Text, ) но если ввожу "глушитель" вместо "бронзовый глушитель" ( к примеру) то поиск...

Поиск файла по частичному совпадению имени
Есть программа для поиска файлов по имени, выбирается директива поиска, вводится имя, если есть совпадение, файл кидается в listBox....

Поиск по частичному совпадению двух ячеек
Добрый день. Прошу помощи с нетривиальной задачей. В интернете много искал, но решения не нашел. Суть в том, что нужно сравнить два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru