Изменить формат даты, MySQL

Имеется огромная база данных в которой присутствует столбец с датой, дата формата 202001, 202002, 202003 .... 202101, 202102 и так далее. Формат у даты [год][номер месяца]. Мне необходимо перевести данный в адекватный вид, а конкретно изменить тип ячейки с varchar на datatime и изменить вид на 2020-01-01, 2020-02-01 и т.д [год-месяц-день]. Возможно ли реализовать подобное средствами mysql?

Проще было бы это сделать простой заменой, но даже notepad++ не тянет файлы с 100+ миллионов строк.


Ответы (2 шт):

Автор решения: Yitzhak Khabinsky

В MySQL для этого есть встроенная функция: STR_TO_DATE().

db-fiddle

SQL

create table tbl (ID INT, bogusdate VARCHAR(10));
insert into tbl values 
(1, '202001'),
(2, '202102');

select *, CONCAT(bogusdate, '01') as JustToSee
    , STR_TO_DATE(CONCAT(bogusdate, '01'),'%Y%m%d') as realdate
from tbl;

Результат

ID bogusdate JustToSee realdate
1 202001 20200101 2020-01-01
2 202102 20210201 2021-02-01
→ Ссылка
Автор решения: Akina
CREATE TABLE test (id INT, ym VARCHAR(10));
INSERT INTO test VALUES (1, '202001'), (2, '202102');
SELECT * FROM test;
id ym
1 202001
2 202102
ALTER TABLE test ADD COLUMN d DATE;
UPDATE test SET d = ym * 100 + 1;
SELECT * FROM test;
id ym d
1 202001 2020-01-01
2 202102 2021-02-01

fiddle

→ Ссылка