2013-12-15 2 views
0

Привет У меня проблема с MySQL, где я пытаюсь сравнить дату с строкой. Я запускаю phpMyAdmin для создания правильного SQL-запроса до его реализации на моем веб-сайте, где строка будет представлять параметр WHERE.MySQL Сравнение даты с возвратом null

У меня есть таблица под названием «заказы», ​​в которой есть столбец с именем «Check In», в котором дата определена как его тип данных. Одна запись имеет установленную дату «Check In» на «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' 

Все они возвращают 0 результаты, даже если у меня есть запись с датой 2013-12-12 , Это мой первый пост из stackoverflow и оправдывать себя, если что-то неоднозначно, но тем не менее поблагодарить любого, кто пытается помочь.

+0

Если вы не указали свою колонку с пробелами, вам не нужно будет указывать ее, и тогда вы не столкнетесь с проблемой использования неправильного типа кавычек. – Barmar

+0

Да, вы правы своей обычной ошибкой соглашения об именах, которые я делаю при создании БД. – user3053743

ответ

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' 
+0

Спасибо, это все решило. Изменен Check In CheckIn, и он работает нормально. благодаря – user3053743

Смежные вопросы