如何将 mysql 连接器 SELECT 结果“datetime.date(2019, 3, 11)”转换为 '11/03/2019'

Posted

技术标签:

【中文标题】如何将 mysql 连接器 SELECT 结果“datetime.date(2019, 3, 11)”转换为 \'11/03/2019\'【英文标题】:How to convert mysql connector SELECT result "datetime.date(2019, 3, 11)" to '11/03/2019'如何将 mysql 连接器 SELECT 结果“datetime.date(2019, 3, 11)”转换为 '11/03/2019' 【发布时间】:2020-03-26 00:24:58 【问题描述】:

使用 Python 3.7.3 和 mysql-connector 8.0.18,我的 SELECT 结果如下所示:

[['2019-001', datetime.date(2019, 3, 11), 'Services']]

我希望结果如下所示:

[['2019-001', '11/03/2019', 'Services']]

代码sn-p:

...
table = 'Customer'
select = "SELECT * FROM %s"
cursor.execute(select % table)
for row in cursor:
    append_list = list(row)
    import_list.append(append_list)                        
print(import_list)  #import_list is actually a list of lists
...

我无法修改 SELECT 语句(使用 ... DATE_FORMAT(Date, '%d/%m/%Y') )因为我不知道何时/是否为 DATE将遇到字段,或者当我在 MySQL 数据库中迭代未知数量的表时该字段的名称。

我所做的调查表明了几种可能性(据我所知):

    遍历 import_list,并进行某种日期时间格式化,例如:
datetime.date(2011, 1, 3).strftime("%d-%m-%Y") 

这似乎不太优雅,但如果这是我必须做的,我需要弄清楚如何去做。

    我看到了创建某种 mysql.connector.conversion.MySQLConverter 类的参考。我也不知道该怎么做,但如果这是最好的方法,我可以进一步调查。这似乎是一种很好的处理方式,因为它是在构建连接器的代码中完成的。

或者是否有另一种 Pythonic 方式来完成我想要完成的工作?

【问题讨论】:

我对日期有同样的问题。你解决了吗? 我不想承认,但我“修复”它的方式是作弊。我控制 MySQL 数据库,所以我将它从日期/时间字段更改为只是一个文本字段。我在这里忍受我缺乏编程技能。愿上帝怜悯我的灵魂。 根据此处的一个答案,这可能是一种解决方法,但绝不是永久解决方案。 ***.com/a/4759039/5685946我希望你能尽快找到一个永久的解决方案。如果我能解决它,我会回答你的问题。 【参考方案1】:

您可以使用strftime("%Y/%m/%d") 来格式化时间戳。例如:

cursor.execute(select % table)
result = cursor.fetchall()

print(result[0][1].strftime("%Y/%m/%d")) # should give you the timestamp in the format you desire

【讨论】:

您知道如何将datetime.timedelta(seconds=55097) 转换为 %H:%M:%S 吗? 没关系,我找到了答案here

以上是关于如何将 mysql 连接器 SELECT 结果“datetime.date(2019, 3, 11)”转换为 '11/03/2019'的主要内容,如果未能解决你的问题,请参考以下文章

mysql字符串拼接

MySQL:如何将当前 select 语句中创建的两个字段的结果相加?

如何解决sqlserver2005中用多表连接的结果建一张新表时,提示各表中的列名必须唯一的问题?

mysql如何合并两条记录,或者将查询出来的结果相连

linux下mysql 如何显示查询结果

mysql中 union连接