嗨我有一个关于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上发表的第一篇文章,如果有什么不明确的话,请原谅我自己,不过感谢任何想要帮助的人。
答案 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'