Как изменить тип столбца с текста на дату в MySQL - PullRequest
1 голос
/ 17 октября 2019

Я загрузил CSV-файл в базу данных MySQL. Внутри таблицы есть столбец времени, который, как следует из названия, содержит информацию о времени :), пожалуйста, посмотрите. Этот столбец сохраняется как текст

Time information is saved as text type

Я пытаюсь преобразовать столбец времени в datetime и нашел следующую справку по stackoverflow MySQL изменить таблицу и преобразовать данные из текста в datetime

Поэтому я попытался пойти тем же путем, то есть

 alter table 'tablename' add column new_column_name date;

 update 'tablename'
 set new_column_name=str_to_date(column_with_time_saved_as_text,'YYYY-MM-DD hh:mm:ss')

Если я выполняю сценарий, я получаю следующую ошибку Код ошибки: 1411. Неверное значение даты и времени: '2019-07-03 23: 47: 46.254 + 02' для функции str_to_date

Полагаю, есть проблема с часовым поясом. Я пытался найти решение, но не смог. Спасибо за любые советы

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Эта ошибка:

Код ошибки: 1411. Неверное значение даты и времени: '2019-07-03 23: 47: 46.254 + 02' для функции str_to_date

означает, что вы используете неверный параметр форматирования, как объяснено здесь вы должны использовать форматеры в форме %dateField, например:

 SELECT STR_TO_DATE("August 10 2017", "%M %d %Y"); 

В качестве альтернативы вы можете использовать SUBSTRING чтобы получить только нужную вам часть времени:

alter table 'tablename' add column new_column_name datetime;
update 'tablename' set new_column_name = SUBSTRING(column_with_time_saved_as_text, 1, 19)
0 голосов
/ 17 октября 2019

Вы можете выполнить str_to_date

    SELECT DATE_FORMAT(STR_TO_DATE('2019-11-03 23:59:46.254+02', '%Y-%m-%d %H:%i:%s'), '%Y-%m-%d %H:%i:%s') dt;

         dt
   2019-11-03 23:59:46

Используя "% Y-% m-% d% H:% i:% s" обновить таблицу

    alter table 'tablename' add column new_column_name datetime;

    update 'tablename'
    set new_column_name= DATE_FORMAT(STR_TO_DATE(column_with_time_saved_as_text,19), '%Y-%m-%d %H:%i:%s'), '%Y-%m-%d %H:%i:%s');

Но это будетигнорировать «254 + 02».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...