【问题标题】:Python: Convert Varbinary type timestamp to unix time stampPython:将 Varbinary 类型时间戳转换为 unix 时间戳
【发布时间】:2013-02-14 11:02:20
【问题描述】:

我有一个 mysql 数据库,将时间戳存储在 varbinary 列中,我的目标是将其转换为 unix 时间戳,以便我可以在两个时隙之间计算经过时间。

+---------+------------+-------------------+----------------+--------------------------+
| some_id | some_name  | user_registration | some_count     | some_value_yes_no        |
+---------+------------+-------------------+----------------+--------------------------+
|  some_id | some_user | 20091129060140    |           2685 |                        1 |
+---------+------------+-------------------+----------------+--------------------------+

这里的 user_registration 是 mysql varbinary(14),假设在连接并提取这些数据后,我将 user_registration 存储在 python 端的一个变量中,

...
    timestamp = row['user_registration']

如何将其转换为 unix 时间戳,这样我就可以在另一个时间戳之间做一个时间差。我查看了http://docs.python.org/2/library/datetime.html,但找不到这样的示例。

【问题讨论】:

    标签: python mysql timestamp unix-timestamp


    【解决方案1】:
    >>> import time
    >>> 
    >>> date_str = "20091129060140"
    >>> time_tuple = time.strptime(date_str, "%Y%m%d%H%M%S")
    >>> timestamp = time.mktime(time_tuple)
    >>> 
    >>> print timestamp
    1259470900.0
    

    【讨论】:

      【解决方案2】:

      您可以先将其转换为日期时间对象,然后使用时间模块将其转换为 Unix 时间。

      import datetime
      import time
      
      user_reg_time = datetime.datetime.strptime("20091129060140", "%Y%M%d%H%m%S")
      epochs_time = time.mktime(user_time_reg.timetuple())
      

      顺便说一句,如果您只需要比较时间,则不需要转换为 Unix 时间; Python 有一个内置的“timedelta”对象。这也可以:

      import datetime
      import time
      
      user_reg_time = datetime.datetime.strptime("20091129060140", "%Y%M%d%H%m%S")
      if datetime.datetime.now() - user_reg_time > datetime.timedelta(weeks=4):
          print "User was registered more than 4 weeks ago"
      

      您可以在 Python 官方文档中获取有关 timedelta 的更多信息。

      【讨论】:

      • 我需要在两个时隙之间做一个时间差,这两个时隙就像我提到的那样,并且想要天差
      • 使用 strptime 将其他时间转换为日期时间。然后减去它们并使用 datetime.timedelta(days=...) 进行比较
      【解决方案3】:

      如果你得到字符串,它将如下:

      from datetime import datetime
      datetime.strptime(timestamp, '%Y%m%d%H%M%S');
      

      【讨论】:

        猜你喜欢
        • 2012-08-19
        • 2013-04-07
        • 1970-01-01
        • 2020-10-19
        • 2017-07-18
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多