Как преобразовать De c 31, 9999 12:00:00 AM в 9999-12-31T00: 00: 00 в базе данных SQLite - PullRequest
1 голос
/ 25 февраля 2020

Как преобразовать «De c 31, 9999 12:00:00 AM» в «9999-12-31T00: 00: 00» в базе данных SQLite.

Этого также будет достаточно, если кто-то может помочь мне перевести "De c 31, 9999 12:00:00 AM" в "9999-12-31". Затем я могу использовать следующее:

выберите STRFTIME ('% Y-% m-% dT% H:% M:% S', '9999-12-31') в качестве ExpiryDate

Заранее спасибо.

Вот как я мог это сделать за Python. Я хотел знать, можем ли мы сделать то же самое в SQLite напрямую.

>>> d = 'Dec 31, 9999 12:00:00 AM'
>>> d1 = datetime.datetime.strptime(d, '%b %d, %Y %I:%M:%S %p')
>>> d1
datetime.datetime(9999, 12, 31, 0, 0)
>>> d2 = d1.strftime('%Y-%m-%dT%H:%M:%S')
>>> d2
'9999-12-31T00:00:00'
>>>

1 Ответ

0 голосов
/ 25 февраля 2020

SQLite не имеет встроенной обратной функции STRFTIME. Вы можете создать для него пользовательскую функцию.

>>> db = sqlite3.connect(FILENAME)
>>> db.create_function('strptime', 2, lambda s, f: str(datetime.datetime.strptime(s, f)))
>>> list(db.execute("SELECT STRPTIME('2020-02-24 17:47:00', '%Y-%m-%d %H:%M:%S')"))
[('2020-02-24 17:47:00',)]
>>> list(db.execute("SELECT STRPTIME('Dec 31, 9999 12:00:00 AM', '%b %d, %Y %I:%M:%S %p')"))
[('9999-12-31 00:00:00',)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...