Сравнение дат MySQL с date_format
Несмотря на попытку использования нескольких методов сравнения дат, пользователь получил неожиданный результат. Они пытались сравнить даты в формате «%d-%m-%Y», но включили в набор результатов ошибочную запись.
Проблема возникает из-за сравнения строк вместо дат. Функция date_format преобразует даты в строки, делая сравнение доступным для лексикографического упорядочения. Например, «28-10-2012» в алфавитном порядке больше, чем «02-11-2012», поэтому оно включено в набор результатов, несмотря на то, что оно было хронологически более ранним.
Чтобы решить эту проблему, сравнение должно быть выполнено для даты вместо строк. Функцию даты можно использовать для извлечения компонента даты из поля DATETIME или DATE. Путем сравнения извлеченных дат обеспечивается хронологический порядок.
Например:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
В этом запросе date(starttime) извлекает дату из поля времени начала, которая затем сравнивается с указанной датой в формате ГГГГ-ММ. -ДД формат. Функция date_format используется только для форматирования результата.
Если время начала — это поле DATETIME, рассмотрите возможность использования:
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
Этот запрос позволяет избежать повторного преобразования даты, поскольку сравнение выполняется непосредственно в поле DATETIME.
Помните, ISO Стандарт -8601 рекомендует использовать «ГГГГ-ММ-ДД» в качестве формата даты, но предоставленный код соответствует указанному пользователем формату «%d-%m-%Y».
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3