我想将我从sqlite3数据库中选择的日期时间转换为unixepoch。我想,一种简单的方法是在unixepoch中的数据库中插入时间戳,但我宁愿不这样做,因为它会降低我的数据库的可读性。
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute('CREATE TABLE if not exists table_name (datetime text, column1 real, column2 real)')
cur.execute("INSERT INTO table_name VALUES (datetime(CURRENT_TIMESTAMP, 'localtime'),?,?)", data)
c.execute("SELECT datetime from table_name")
#here I would like to convert the above selection (datetime in localtime) to unixepoch
感谢您阅读本文!
答案 0 :(得分:1)
sqlite3
数据库已经附带一个适配器,用于将ISO日期时间格式解释为datetime.datetime()
objects:
c.execute('SELECT datetime as "datetime [timestamp]" from table_name')
for datetime, in c:
print type(datetime)
这将为每行打印<type 'datetime.datetime'>
。 datetime.datetime()
对象比UNIX纪元偏移更加灵活和强大。
注意as "datetime [timestamp]"
别名;这会将类型信息添加到列中,覆盖text
定义中该列的CREATE TABLE
类型,允许Python应用类型适配器。如果您将列声明为timestamp
,则甚至不必使用别名:
c.execute('CREATE TABLE if not exists table_name (datetime timestamp, column1 real, column2 real)')
如果您 使用UNIX纪元偏移,您可以使用time.mktime()
function和datetime.datetime.timetuple()
method转换它们:
timeoffset = time.mktime(datetime.timetuple())