如何在SQLite数据库中将9999年12月31日上午12:00:00转换为9999-12-31T00:00:00

时间:2020-02-25 00:24:19

标签: sqlite

如何在SQLite数据库中将“ 9999年12月31日上午12:00:00”转换为“ 9999-12-31T00:00:00”。

如果有人可以帮助我将“ 9999年12月31日12:00:00”隐瞒到“ 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 :(得分:0)

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',)]