【发布时间】:2010-09-12 01:35:24
【问题描述】:
在 python 中将 mysql 时间戳转换为纪元时间 - 有没有简单的方法来做到这一点?
【问题讨论】:
-
MySQL 时间戳是什么样的?
-
“YYYY-MM-DD HH:MM:SS”格式的“字符串”。
标签: python mysql time timestamp
在 python 中将 mysql 时间戳转换为纪元时间 - 有没有简单的方法来做到这一点?
【问题讨论】:
标签: python mysql time timestamp
为什么不让 MySQL 做艰苦的工作?
select unix_timestamp(fieldname) from tablename;
【讨论】:
将mysql时间转换为纪元:
>>> import time
>>> import calendar
>>> mysql_time = "2010-01-02 03:04:05"
>>> mysql_time_struct = time.strptime(mysql_time, '%Y-%m-%d %H:%M:%S')
>>> print mysql_time_struct
(2010, 1, 2, 3, 4, 5, 5, 2, -1)
>>> mysql_time_epoch = calendar.timegm(mysql_time_struct)
>>> print mysql_time_epoch
1262401445
将纪元转换为 MySQL 可以使用的东西:
>>> import time
>>> time_epoch = time.time()
>>> print time_epoch
1268121070.7
>>> time_struct = time.gmtime(time_epoch)
>>> print time_struct
(2010, 3, 9, 7, 51, 10, 1, 68, 0)
>>> time_formatted = time.strftime('%Y-%m-%d %H:%M:%S', time_struct)
>>> print time_formatted
2010-03-09 07:51:10
【讨论】:
我使用类似以下的方法从 MySQL 日期(本地时间)获取纪元 (UTC) 以来的秒数:
calendar.timegm(
time.gmtime(
time.mktime(
time.strptime(t,
"%Y-%m-%d %H:%M:%S"))))
【讨论】:
如果您出于某种原因不想让 MySQL 完成这项工作,那么您可以在 Python 中轻松完成这项工作。当你从 MySQLdb 中获取一个 datetime 列时,你会得到一个 Python datetime.datetime 对象。要转换其中之一,您可以使用 time.mktime。例如:
import time
# Connecting to database skipped (also closing connection later)
c.execute("SELECT my_datetime_field FROM my_table")
d = c.fetchone()[0]
print time.mktime(d.timetuple())
【讨论】: