0 / 0 / 0
Регистрация: 08.03.2026
Сообщений: 3

Работа с датами SQLite

08.03.2026, 19:22. Показов 541. Ответов 2
Метки нет (Все метки)

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

Нужна помощь. Честно говоря я в тупике. Решила переписать свой проект (среда c++ Builder 12). Старый проект работает в связке с базой данных Access + ADO. В новом решилась перейти на SQLite + FireDac. Согласно мануалу импортировала таблицы в SQLite. Все перенеслось без потерей данных.

Но оказалось что SQLite не потдерживает тип данных DateTime. Тоесть в таблицах поля с датами стали строковыми типа 2026-03-08 00:00:00. Это особенность sqlite.

Теперь у меня возникли проблемы - во первых в сетке отображается дата не так как хотелось бы. Погуглив нашла пару вариантов. Например использовать функцию strftime('%d.%m.%Y', Date_vh) AS Date_vh_fmt, т.е. в тексте запроса будет два одинаковых поля, одно оригинальное а второе отформатированное для отображения в гриде. Это танцы с бубном.
Второй вариант DisplayFormat = 'dd.mm.yyyy' тоже не подходит так как грид не может форматировать строку в формат даты и значения в столбце даты просто не отображаются.

Вторая проблема это добавление записей. Я использую компонент AdvDBDateTimePicker. Можно любой другой но проблета таже. Я не могу даже подключиться к базе через DataField. Тут же всплывает сообщение что неверный формат даты.

Теоретически можно было бы так попробовать
Чтение даты из базы
C++
1
2
TDateTime dt = StrToDateTime(FDQuery1->FieldByName("Date_vh")->AsString,
                             TFormatSettings::Create("en-US"));
Запись даты в базу
C++
1
2
FDQuery1->FieldByName("Date_vh")->AsString =
    FormatDateTime("yyyy-mm-dd hh:nn:ss", AdvDBDateTimePicker1->Date);
Просидела полночи в инете. Искала способы решить проблему. Пробовала разные варианты. Пыталась менять разные свойства компонентов. Что интересно в шарпе и даже наверное в дельфи среда программирования сама преобразует дату в нужный формат. Может я и ошибаюсь. А может сам билдер не умеет работать с датами в формате строки? Это просто мыси вслух.

Что обидно - пару месяцев работаю над новым проектом - модули распределения прав пользователей, авторизация, логирование. Все написано и вот теперь когда пришло время заняться написания логики для работы с базой - тупик.

Так не хочется возвращаться опять к старой access. Хотя она и работает отлично.

Спасибо, если кто то поделится опытом.

С уважением, ева.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2026, 19:22
Ответы с готовыми решениями:

Работа с датами
Задание: "День учителя ежегодно отмечается в первое воскресенье октября. Определить число, на...

Работа с датами
Здравствуйте, у меня есть столбец с датами рождения в DBGride, мне нужно их сортировать по таким...

Работа с базой данных SQLite
Выходит это не парадокс , а SQLite format 3. И как мне с этой базой работать? Для начало хотя бы...

2
437 / 163 / 28
Регистрация: 12.12.2020
Сообщений: 1,315
08.03.2026, 21:20
Храните как лонг в виде unix time а при добавлении и извлечении конвертируйте
1
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
10.03.2026, 07:05
Я работал с датами из таблиц БД SQLite и проблем это не вызывало. Но, таки да, это было в Delphi, а не в Билдере. Даже интересно стало, попробую, когда все вместе соберемся: я, Билдер и Скуль.

А, так-то, Alex1126 предлагает вполне себе решение, иногда именно оно - единственно возможное...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2026, 07:05
Помогаю со студенческими работами здесь

Работа с SQLite через TSQLConnection в DLL
Всем привет! Пытаюсь использовать TSQLConnection в DLL для подключения к SQLite Код...

Узнать разницу между двумя датами в месяцах
Привет! Работаю с переменными типа TDateTime: InputDate, StartDate. Хочу узнать разницу в...

Интервал между датами
Здравствуйте. Необходимо найти интервал в днях между датами. Знаю про существование функции...

Нормальный класс для работы с датами
Извиняюсь за возможно глупый вопрос, но нигде не могу найти класс для работы с датой и временем, с...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru