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

0 投票
3 回答
1006 浏览
提问于 2025-04-17 17:25

我有一个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)。假设我已经连接上数据库并提取了这些数据,现在我在Python中把user_registration存储在一个变量里。

...
    timestamp = row['user_registration']

我该如何把这个变量转换成Unix时间戳,这样我就可以和另一个时间戳进行时间差的计算呢?我查看了http://docs.python.org/2/library/datetime.html,但没找到类似的例子。

3 个回答

0

如果你得到一个字符串,它会是这样的:

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

在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够好,或者是我们对某些概念理解得不够透彻。比如,有人可能在使用某个库的时候,发现它的功能和自己想的不一样,这时候就需要去查找资料,看看别人是怎么解决类似问题的。

在社区里,比如StackOverflow,大家会分享自己的经验和解决方案。你可以看到很多人提问,也有很多人回答,这样就形成了一个互帮互助的环境。对于初学者来说,看到这些讨论可以帮助你更好地理解编程的各种细节。

总之,编程是一门需要不断学习和实践的技能,遇到问题时不要气馁,多去查阅资料和请教他人,慢慢你就会变得更加熟练。

>>> 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
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())

顺便说一下,如果你只是想比较时间,其实不需要转换成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的信息。

撰写回答