Python MySQL日期表单

2024-06-17 10:02:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用python编写的MySQL查询,它检查日期范围。命令如下:

"""
SELECT <something>
FROM <a_table>
WHERE datekey BETWEEN (SELECT date_key 
                       FROM `date_table` WHERE date={date_start})
              AND (SELECT date_key 
                   FROM `date_table` WHERE date={date_end})
""".format(date_start=date_start, date_end=date_end)

其中date_start和{}是日期字符串的变量,例如2014-04-13

现在当我执行这个命令时,看起来MySQL将日期字符串解释为一个等式,从而返回Incorrect date value: '1997' for column 'date' at row 1

1997年=2014年4月13日

我就是这么想的。在

我想将字符串作为原始字符串传入,但未能成功(我尝试使用r“”和u“”)

有没有办法把变量作为字符串传入?在


Tags: andkey字符串from命令datemysqltable
1条回答
网友
1楼 · 发布于 2024-06-17 10:02:13

你好像缺少日期文字的单引号。在

MySQL将看到一个“空”的短划线字符作为一个减法操作

 SELECT 2016-04-13        > 1999, numeric value returned by expression

MySQL的看法与此相同:

^{pr2}$

为了让MySQL看到文本日期,我们用单引号将其括起来

 SELECT '2016-04-13'                      > a string literal (VARCHAR)

 SELECT '2016-04-13' + INTERVAL 0 DAY     > a DATE value

 SELECT DATE('2016-04-13')                > a DATE value returned by a function

在MySQL中,如果DATE或time的值是有效的,则会将DATE或time隐式地转换为DATE或time

MySQL还将在MySQL需要日期或日期时间的上下文中隐式地转换数字文本,例如

SELECT DATE( 20160413 )                 > DATE value

SELECT 20160413 + INTERVAL 0 DAY        > DATE value

我不知道有谁会相信这一点。当文字用单引号括起来时,我们会得到相同的结果。。。在

SELECT DATE( '20160413' )               > DATE value

SELECT '20160413' + INTERVAL 0 DAY      > DATE value

相关问题 更多 >