#mysql #sql #string #date #datetime
#mysql #sql #строка #Дата #дата-время
Вопрос:
Использование локального подключения к хранилищу в точке данных Toad. Он настроен на использование MYSQL.
EXTRACT_DATE — это varchar(20) в формате: 08282020
Пытаюсь изменить этот формат, чтобы он отображался как 08/28/2020 в моем наборе результатов. Тем не менее, я продолжал получать {null} возвращенный.
Я пробовал множество различных методов (см. Код ниже), но продолжаю получать тот же результат.
SELECT
EXTRACT_DATE,
DATE_FORMAT(EXTRACT_DATE, '%m/%d/%Y') AS NEW_DT,
STR_TO_DATE(EXTRACT_DATE, '%m/%d/%Y') AS NEW_DT2,
CONVERT (EXTRACT_DATE, DATE) AS NEW_DT3
FROM USERTABLE
GROUP BY EXTRACT_DATE
Ответ №1:
STR_TO_DATE
превращает строку в дату. Чтобы отформатировать результат, примените DATE_FORMAT
вот так:
select DATE_FORMAT( STR_TO_DATE('08282020', '%m%d%Y'),'%m/%d/%Y') AS NEW_DT from dual
Ответ №2:
Я думаю, что проще и эффективнее использовать функции sring:
concat_ws(
'/',
substring(extract_date, 1, 2),
substring(extract_date, 3, 2),
substring(extract_date, 5, 4)
) as new_dt
Или:
concat_ws(
'/',
left(extract_date, 2),
substring(extract_date, 3, 2),
right(extract_date, 4)
) as new_dt
Что касается запроса, который вы хотели написать: сначала вам нужно преобразовать в дату, а затем обратно в строку. Итак:
date_format(str_to_date(extract_date, '%m%d%Y'), '%m/%d/%Y')