Преобразование строки в дату в MySQL в заданном формате строки

Вопрос или проблема

База данных возвращает строковую дату в следующем формате: Sep/30/2025. Мне нужно создать представление, которое будет выполнять расчеты на основе этой даты, например, добавлять 7 дней к этой дате или вычитать 7 дней из этой даты. Я пытался использовать STR_TO_DATE(SupplierDate, '%m/%d/%Y'), чтобы преобразовать строку в дату, но значения возвращают только null. Вырезки из моего представления:

        case 
            when STR_TO_DATE(SupplierDate, '%m/%d/%Y') > curdate() then 'Out of Date'
        end

Преобразуйте даты в строковом формате Sep/30/2025 в действительные форматы даты MySQL 2025-09-30, чтобы я мог использовать их для выполнения вычислений с датами.

Ответ или решение

Чтобы конвертировать строковое представление даты формата Sep/30/2025 в формат даты MySQL YYYY-MM-DD, вам необходимо использовать функцию STR_TO_DATE с соответствующим форматом. В вашем случае, правильный формат для конверсии строки будет '%b/%d/%Y', где %b соответствует сокращенному названию месяца.

Вот как вы можете это сделать в вашей представлении (view):

SELECT 
    SupplierDate,
    STR_TO_DATE(SupplierDate, '%b/%d/%Y') AS ConvertedDate,
    CASE 
        WHEN STR_TO_DATE(SupplierDate, '%b/%d/%Y') > CURDATE() THEN 'Out of Date' 
        ELSE 'In Date' 
    END AS DateStatus,
    DATE_ADD(STR_TO_DATE(SupplierDate, '%b/%d/%Y'), INTERVAL 7 DAY) AS DatePlus7,
    DATE_SUB(STR_TO_DATE(SupplierDate, '%b/%d/%Y'), INTERVAL 7 DAY) AS DateMinus7
FROM 
    YourTableName;

В этом запросе:

  1. SupplierDate — это ваша исходная строка даты.
  2. STR_TO_DATE(SupplierDate, '%b/%d/%Y') конвертирует строку даты в формат даты MySQL.
  3. CASE конструкция проверяет, больше ли преобразованная дата сегодняшней даты (полученной с помощью CURDATE()). Если да, то возвращается ‘Out of Date’, в противном случае ‘In Date’.
  4. DATE_ADD и DATE_SUB добавляют и вычитают 7 дней соответственно из преобразованной даты.

Убедитесь, что имя вашей таблицы заменено на YourTableName в запросе. Проверьте результаты и убедитесь, что они соответствуют вашим ожиданиям. Если все сделано правильно, вы получите корректные значения дат, которые можно использовать для дальнейших вычислений.

Оцените материал
Добавить комментарий

Капча загружается...