【问题标题】:Convert sqlite3 timestamp to epoch time in python在python中将sqlite3时间戳转换为纪元时间
【发布时间】:2014-01-11 17:35:03
【问题描述】:

我想将从我的 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

感谢您阅读本文!

【问题讨论】:

    标签: python datetime sqlite epoch


    【解决方案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 定义中该列的text 类型的列,允许Python 应用类型适配器。如果您将您的列声明为timestamp,您甚至不必让您的查询使用别名:

    c.execute('CREATE TABLE if not exists table_name (datetime timestamp, column1 real, column2 real)')
    

    如果您使用 UNIX 纪元偏移量,您可以使用 time.mktime() functiondatetime.datetime.timetuple() method 转换它们:

    timeoffset = time.mktime(datetime.timetuple())
    

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 2020-06-24
      • 2021-05-10
      • 1970-01-01
      • 2021-01-18
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      相关资源
      最近更新 更多