Изменить формат даты, MySQL
Имеется огромная база данных в которой присутствует столбец с датой, дата формата 202001, 202002, 202003 .... 202101, 202102 и так далее. Формат у даты [год][номер месяца]. Мне необходимо перевести данный в адекватный вид, а конкретно изменить тип ячейки с varchar на datatime и изменить вид на 2020-01-01, 2020-02-01 и т.д [год-месяц-день]. Возможно ли реализовать подобное средствами mysql?
Проще было бы это сделать простой заменой, но даже notepad++ не тянет файлы с 100+ миллионов строк.
Ответы (2 шт):
Автор решения: Yitzhak Khabinsky
→ Ссылка
В MySQL для этого есть встроенная функция: STR_TO_DATE().
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 |