【问题标题】:Python: Converting MySQL datetime to datetime for formatPython:将 MySQL 日期时间转换为日期时间以进行格式化
【发布时间】:2013-10-30 07:46:45
【问题描述】:

这里有点新手。

我有一个从 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

谢谢

【问题讨论】:

  • 理想情况下,原始 MySQL 日期时间在字符串格式中是什么样的?

标签: python mysql datetime


【解决方案1】:

给定的列表包含带有日期时间的元组,而不仅仅是日期时间。所以这些物品应该被拆开包装。

>>> 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']

【讨论】:

    猜你喜欢
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2011-01-23
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多