«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему сравнение дат MySQL с date_format дает неожиданные результаты?

Почему сравнение дат MySQL с date_format дает неожиданные результаты?

Опубликовано 12 ноября 2024 г.
Просматривать:804

Why Is MySQL Date Comparison with date_format Yielding Unexpected Results?

Сравнение дат 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».

Заявление о выпуске Эта статья перепечатана по адресу: 1729739525. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3