Указание диапазона дат в запросе в MySQL - PullRequest
0 голосов
/ 30 июня 2019

У меня есть таблица с информацией о торговых товарах, вроде логистики В нем есть столбец с именем 'Arriving_date', который содержит даты прибытия в таком формате, как этот "30.06.2019".

Теперь мне нужно ввести запрос, в котором отображаются только товары, которые еще не прибыли, другими словами, дата прибытия которых> 30.06.2019. Итак, я ввожу свой запрос

SELECT *
FROM traffic
WHERE arriving_date > '30.06.2019'

Но этот запрос показывает мне только пустое поле. И я думаю, что я уже догадался, почему. Очевидно, он не может сравнивать числа в таком формате. Но я не уверен, как мне тогда сравнивать даты. Помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 30 июня 2019

Предполагая, что прибывающая_дата - это просто строка (а не фактическая дата)

SELECT *
  FROM traffic
 WHERE str_to_date(arriving_date, '%d.%m.%Y') > now()
    OR arriving_date is null;

Это преобразует строку прибывающего_даты в дату и сравнивает ее с текущей датой и временем.

Я также добавил проверку на то, что дата прибытия равна нулю (т.е. не установлена), если она установлена ​​по прибытии.

Обратите внимание, что использование функции для значения из столбца заставляет все запросы выполнять полное сканирование таблицы. Обойти это невозможно, поскольку ваш формат даты такой, какой он есть.

1 голос
/ 30 июня 2019

Спасибо всем за помощь!

Мне удалось решить мою проблему следующим образом: 1. Я изменил тип данных Arriving_date на «date» (это было целое число) 2. Я переписал даты из формата «дд.мм.гггг» в «гггг-мм-дд», не уверенный, если это имеет значение. 3. Окончательный запрос выглядит так:

SELECT *
FROM traffic
WHERE arriving_date > NOW()

Теперь отлично работает.

0 голосов
/ 30 июня 2019

при условии, что столбец Arriving_date является типом данных Porper Date, попробуйте преобразовать строку даты в правильную дату

    SELECT *
    FROM traffic
    WHERE arriving_date > str_to_date('30.06.2019', '%d.%m.%Y') 

или если обе даты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...