如何将dateformat作为参数传递给Mysqldb执行方法

时间:2014-06-19 06:58:15

标签: python string python-2.7 mysql-python

为了逃避%,我们可以做如下。

cur.execute("SELECT DATE_FORMAT(END_DATE, '%%Y-%%m-%%d') FROM  CALENDAR_DETAILS", ())

但是,如何将dateformat传递给execute方法如下?

cur.execute("SELECT DATE_FORMAT(END_DATE, %s) FROM  CALENDAR_DETAILS", "%%Y-%%m-%%d")

我得到cur.fetchone()的结果为'%Y-%m-%d'而不是第二个语句的格式化日期值。

非常感谢。

1 个答案:

答案 0 :(得分:1)

简短版本 - 使用:

cur.execute("SELECT DATE_FORMAT(END_DATE, %s) FROM  CALENDAR_DETAILS", "%Y-%m-%d")

长(呃)版本:

execute格式化查询字符串,因此当您在查询中有%时 - 您需要转义它们(第一行)。 但是,当%不在查询中而是在参数中时 - 不需要转义。 当你跑:

cur.execute("SELECT DATE_FORMAT(END_DATE, %s) FROM  CALENDAR_DETAILS", "%%Y-%%m-%%d")

执行的查询是

SELECT DATE_FORMAT(END_DATE, '%%Y-%%m-%%d') FROM CALENDAR_DETAILS

即。您以您提供给sql server的格式转义格式IN。这就像给出一个'7777'的格式 - 你总是得到'7777' - 所以在这种情况下你总是得到%Y-%m-%d。