Python:将Varbinary类型的时间戳转换为unix时间戳

时间:2013-02-28 09:54:11

标签: python mysql timestamp unix-timestamp

我有一个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,但我找不到这样的例子。

3 个答案:

答案 0 :(得分:3)

您可以先将其转换为日期时间对象,然后使用时间模块转换为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())
BTW如果你只是需要比较时间,你真的不需要转换为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的更多信息。

答案 1 :(得分: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 :(得分:0)

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

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