如何将日期和时间从字符串写入Sqlite表?

2024-03-29 13:59:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串格式的日期和时间“2016-03-28220:23:46+0800”。如何将其转换为Sqlite3在“datetime”域中支持的日期时间格式?我使用python来读/写数据库中的数据。在

我知道使用python是有可能实现的:

>>> str = "2016-03-28T20:23:46+0800"
>>> temp = str.split('T')
>>> temp[1] = temp[1].rstrip('+')
>>> temp[1]
'20:23:46+0800'
>>> temp[1] = temp[1].split('+')[0]
>>> result = " ".join(temp)
>>> result
'2016-03-28 20:23:46'

但也许给定的字符串有一个可转换的格式?在


Tags: 数据字符串数据库datetime格式时间resulttemp
2条回答

如果您试图以错误的格式插入时间戳,sqlite3将不会产生错误,除非您尝试将值选择回datetimeobject。要验证输入的日期/时间字符串,convert it to ^{} firstsqlite3模块可以自动转换{}:

#!/usr/bin/env python3
import sqlite3
from datetime import datetime

db = sqlite3.connect(':memory:')
db.execute('CREATE TABLE dates (timestamp TIMESTAMP)')
db.executemany('INSERT INTO dates VALUES(?)', 
               [[datetime.utcnow()], ['2016-03-28 20:23:46.000000+0800']])
print(*db.execute('SELECT timestamp FROM dates'), sep='\n')

输出

^{pr2}$

TIMESTAMP字段接受ISO8601格式的字符串'YYYY-MM-DD HH:MM:SS.mmmmmm'或{}对象。在

To return ^{} back, you could use ^{}(如果需要时区支持;define your own converter,它返回时区感知的日期时间对象)。在

sqlite中不存在日期时间格式,一种解决方法是使用数字序列作为日期时间,例如:

def Strtime2Num(result):
    date_object = datetime.strptime(Strtime,"%Y-%m-%dT%H:%M%S+0800")
    Strtime = date_object.strftime('%Y%m%d%H%M')
    return int(result)

在sql命令中选择时,可以使用

^{pr2}$

相关问题 更多 >