Python:将MySQL日期时间转换为日期时间格式

时间:2013-10-30 07:46:45

标签: python mysql datetime

这里有点新手。

我有一个程序从MySQL数据库中获取结果。 它选择字段Id和ship_date,查询仅根据给定的Id搜索返回的记录。 结果应该是2个或更多日期。 我的目标是格式化日期并比较它们之间的日期。 结果被放入单独的列表中,因此我得到两个这样的列表:

[(datetime.datetime(2012, 12, 28, 0, 0),), (datetime.datetime(2012, 12, 28, 0, 0),)]

[(datetime.datetime(2012, 06, 15, 0, 0),), (datetime.datetime(2012, 08, 19, 0, 0),)]
例如

但是,当我尝试将整个列表转换为可读格式时,我发现了一段代码:

ship_date = [dt.strftime("%Y-%m-%d") for dt in ship_date]

我总是得到一个没有属性strftime的错误。 我已经尝试将它们转换为字符串然后使用strftime,但我得到的错误是str没有属性strftime。 我完全失去了。

顺便说一句,我已导入日期时间

有没有人可以通过任何方式将这些列表(其中2个)转换为可读格式,例如

2012-12-28, 2012-12-28

由于

1 个答案:

答案 0 :(得分:1)

给定列表包含具有datetime的元组,而不仅仅是datetime。所以这些物品应该打开包装。

>>> ship_dates = [(datetime.datetime(2012, 12, 28, 0, 0),), (datetime.datetime(2012, 12, 28, 0, 0),)]
>>> [dt.strftime("%Y-%m-%d") for dt in ship_dates]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'strftime'

>>> [dt.strftime("%Y-%m-%d") for (dt,) in ship_dates]
['2012-12-28', '2012-12-28']

或者您可以省略(..)

>>> [dt.strftime("%Y-%m-%d") for dt, in ship_dates]
['2012-12-28', '2012-12-28']