codeXprojectX Ответов: 1

Как сохранить записи в формате года, месяца и даты в sqlite3


Здравствуйте друзья,

Я пытаюсь получить записи определенного диапазона дат в Django, я погуглил, чтобы увидеть, могу ли я получить какое-то решение, но ничего не работает.

Дата и время, сохраненные в базе данных, - "7 мая 2018 года, 11:33 утра", а формат даты, который я получаю из html, - "2018-05-01". Поскольку формат даты отличается, я не могу извлекать записи в диапазоне. Пожалуйста помочь. Спасибо.

Что я уже пробовал:

q1 = request.POST.get('q1') #2018-05-01
q2 = request.POST.get('q2') #2018-05-10 

ModelClass.objects.filter(created_date__range=(q1, q2))

#created_date field has date in format - "May 7, 2018, 11:33 a.m."

1 Ответов

Рейтинг:
6

Jochen Arndt

Дата-время не хранится в базе данных в формате "7 мая 2018 года, 11:33 утра". Он возвращается отформатированным таким образом некоторой функцией, используемой для запроса базы данных.

SQLite знает три различных формата для указания дат и времени:

Текст в виде строк ISO8601 ("гггг-ММ-ДД чч:мм:СС.ССС").
Реальные, Как числа юлианского дня, число дней с полудня в Гринвиче 24 ноября 4714 года до нашей эры по пролептическому Григорианскому календарю.
Целое число как время Unix, количество секунд с 1970-01-01 00:00:00 UTC.
Поэтому вам придется использовать один из этих форматов (возможно, текстовый формат в вашем случае). Существуют также вспомогательные функции для форматирования дат: Язык Запросов SQLite: Функции Даты И Времени[^].

Ваши опубликованные даты уже находятся в формате ISO 8601. Таким образом, ваш код должен работать без изменений.


codeXprojectX

Большое спасибо Йохен :)

Работа :P

Спасибо за ответ.

Jochen Arndt

Добро пожаловать и благодарю вас за то, что вы приняли мое решение.