MySQL日期比较返回null

时间:2013-12-15 13:20:04

标签: php mysql

嗨我有一个关于MySQL的问题,我尝试将Date与字符串进行比较。我在phpMyAdmin上摆弄以创建正确的SQL查询,然后在我的网站上实现它,其中字符串将代表WHERE子句参数。

我有一个名为'bookings'的表,其中有一个名为'Check In'的列,其中Date设置为其数据类型。一个条目的“签到”日期设置为“2013-12-12”。我计划发布结构和条目的图像,但由于我的起始声誉而无法发布。

我浏览过并尝试了StackOverFlow和其他来源的各种变体,例如:

SELECT * FROM `bookings` WHERE DATE_FORMAT('Check In',  '%Y-%m-%d' ) = STR_TO_DATE('2013-12-12', '%Y-%m-%d')

SELECT * FROM `bookings` WHERE 'Check In' = STR_TO_DATE('2013-12-12', '%Y-%m-%d')

SELECT * FROM `bookings` WHERE 'Check In' = DATE_Format('2013-12-12', '%Y-%m-%d')

SELECT * FROM `bookings` WHERE 'Check In' = '2013-12-12'

即使我有一个日期为2013-12-12的条目,所有这些都返回0结果。这是我在stackoverflow上发表的第一篇文章,如果有什么不明确的话,请原谅我自己,不过感谢任何想要帮助的人。

1 个答案:

答案 0 :(得分:0)

'Check In'只是字符串值,因此字符串'Check In'将转换为“0000-00-00”。

mysql> SELECT DATE_FORMAT('Check In', '%Y-%m-%d');
+-------------------------------------+
| DATE_FORMAT('Check In', '%Y-%m-%d') |
+-------------------------------------+
| NULL                                |
+-------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;
+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: 'Check In' |
+---------+------+--------------------------------------+
1 row in set (0.00 sec)

要引用列名,请使用`Check In`。你能试试吗?

SELECT * FROM `bookings` WHERE DATE_FORMAT(`Check In`,  '%Y-%m-%d' ) = STR_TO_DATE('2013-12-12', '%Y-%m-%d')

SELECT * FROM `bookings` WHERE `Check In` = STR_TO_DATE('2013-12-12', '%Y-%m-%d')

SELECT * FROM `bookings` WHERE `Check In` = DATE_Format('2013-12-12', '%Y-%m-%d')

SELECT * FROM `bookings` WHERE `Check In` = '2013-12-12'