У меня есть список дат в таблице, которая в настоящее время содержит этот столбец как тип данных Varchar. То, что я хочу сделать, это очистить эту таблицу, и первый шаг - преобразовать этот столбец в тип данных Date и преобразовать все значения, которые у меня должны быть согласованными.
Ниже приведены мои операции создания и вставки. операторы, это образец столбца даты:
Создать таблицу:
CREATE TABLE “BU_TABLE_DATES"
( "END_DATE" VARCHAR2(255 BYTE)
);
Вставить операторы:
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('01/01/2018');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('13-Jan-18');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('13-Jan-19');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('13-Jan-19');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('13-Jan-20');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('13/01/2018');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('13/01/2019');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('13/01/2020');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('17/07/2017');
INSERT INTO "BU_TABLE_DATES" (END_DATE) VALUES ('17/07/2019');
Что бы я хотел, чтобы конечный результат выглядел например, следующий (все данные типа Дата)
End_Date
01/01/2018
13/01/2018
13/01/2019
13/01/2019
13/01/2020
13/01/2018
13/01/2019
13/01/2020
13/01/2020
17/07/2017
17/07/2019
В настоящее время мне удалось написать следующий код, используя инструкцию case и str_to_date, которые помогают преобразовать значения, где месяц - только 2 символа, а также как я могу иметь формат для отображения года в конце, даже если код написан таким образом.
Мой запрос
SELECT
End_Date,
CASE End_Date
WHEN substring(End_Date,2,1) = '-' THEN STR_TO_DATE (End_Date,'%d-%m-%Y')
WHEN substring(End_Date,2,1) = '/' THEN STR_TO_DATE (End_Date,'%d/%m/%Y')
ELSE STR_TO_DATE (End_Date,'%d/%m/%Y') END as End_Date_New
FROM
BU_TABLE_DATES
;
Вывод
End_Date End_Date_New
01/01/2018 2018-01-01
13-Jan-18 (null)
13-Jan-19 (null)
13-Jan-19 (null)
13-Jan-20 (null)
13/01/2018 2018-01-13
13/01/2019 2019-01-13
13/01/2020 2020-01-13
13/01/2020 2020-01-13
17/07/2017 2017-07-17
17/07/2019 2019-07-17
Наконец в код, который я создаю новый столбец, но я хочу просто изменить тип данных существующего столбца, но в настоящее время нашел способ создать новый столбец, а затем подумал, что может быть лучше удалить старый d, но в идеале нужно, чтобы это работало с 1-м столбцом.
Хотелось бы получить совет о том, как лучше всего с этим справиться.
Заранее спасибо.