Mysql правильное сравнение дат - PullRequest
0 голосов
/ 26 марта 2019

В моей БД у меня есть таблица 'приводит' со столбцом 'datum_event' (varchar).Мне нужно получить строки между «от» до «datum_event».Например, с 30.11.2018 по 31.03.2019.Я использую str_to_date для преобразования varchar в дату для сравнения.

My sql:

SELECT DISTINCT(l.lead_id)
FROM leads as l
WHERE STR_TO_DATE(datum_event,'%d.%m.%y') >= STR_TO_DATE('30.11.2018','%d.%m.%y')
  AND STR_TO_DATE(datum_event,'%d.%m.%y') <= STR_TO_DATE('31.03.2019','%d.%m.%y')
ORDER BY  l.lead_id  desc

Но теперь я получаю пустой результат.Это неверно.Есть строка с datum_event '01 .12.2018 ', но я не вижу ее в результате.

Я вижу результат, если даты сравнения даны в одном году, например, с 01.01.2019 по 31.03.2019, но если я сравниваю с 31.12.2018, я не вижу никакого результата.

Пожалуйста, помогите мне, как я могу решить эту проблему?Благодаря.

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

select STR_TO_DATE('30.11.2018','%d.%m.%y') вернется 2020-11-30 но ваша потребность 2018-11-30 эта дата, поэтому вы должны изменить, как показано ниже в формате

  select STR_TO_DATE('30.11.2018','%d.%m.%Y') this will `2018-11-30`

Я добавил формат даты как демо ссылка

так что в вашем запросе вам нужно исправить свой формат

SELECT l.lead_id
FROM leads as l
WHERE STR_TO_DATE(datum_event,'%d.%m.%Y') >= STR_TO_DATE('30.11.2018','%d.%m.%Y')
  AND STR_TO_DATE(datum_event,'%d.%m.%Y') <= STR_TO_DATE('31.03.2019','%d.%m.%Y')
ORDER BY  l.lead_id  desc
0 голосов
/ 26 марта 2019

Вы можете использовать условие SQL BETWEEN.

SELECT DISTINCT(l.lead_id)
FROM leads as l
WHERE (STR_TO_DATE(datum_event,'%d.%m.%y') BETWEEN 
STR_TO_DATE('30.11.2018','%d.%m.%y') AND STR_TO_DATE('31.03.2019','%d.%m.%y'))
ORDER BY  l.lead_id  desc`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...