Конвертировать столбец CHAR в столбец DATETIME в MySQL - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть таблица 'day_trade' со столбцом CHAR с именем 'date' с данными в этом формате: Чт 26 апреля 2018 00:00:22 GMT + 0000

Я хочу преобразовать этот столбец в DATETIME, чтобы можно было выполнять преобразования данных производительности и т. Д. В столбце. Я использовал функцию str_to_date, но она не всегда надежна.

Я могу запустить следующий SQL и вывести данные в нужном мне формате даты

select convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime) from alert_test.day_trade

2018-04-26 00: 00: 22 * ​​1008 *

Итак, я попытался выполнить следующее утверждение:

update alert_test.day_trade set date = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)

План состоял в том, чтобы преобразовать строку в допустимый формат DATETIME, а затем выполнить изменение в столбце для типа DATETIME

0   78  13:17:51    update alert_test.day_trade set date = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)  Error Code: 1292. 

Я получаю следующую ошибку:

Truncated incorrect datetime value: 'Thu Apr 26 2018 00:00:22 GMT+0000' 0.047 sec

Затем я подумал создать новый столбец 'date2' типа DATETIME и попытался выбрать из даты, преобразовать и вставить в date2:

update alert_test.day_trade set date2 = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)

та же ошибка

Наконец, я создал date3 для типа VARCHAR и подумал, что сделаю преобразование в date3, а затем либо a) изменим этот столбец на DATETIME, либо сделаю выборочную вставку в date2, которая уже является DATETIME.

update alert_test.day_trade set date3 = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)

та же ошибка.

В основном я не могу преобразовать свои данные в действительный формат DATETIME.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Я заметил, что после публикации GMT было причиной проблемы. Мне не нужна была эта информация, поэтому я просто удалил ее, после чего преобразование сработало как положено.

update alert_test.day_trade set date = replace(date," GMT+0000", "")
0 голосов
/ 26 апреля 2018

У меня есть таблица 'day_trade' со столбцом CHAR с именем 'date' с данными в этом формате: четверг 26 апреля 2018 00:00:22 GMT + 0000

str_to_date(date, "%a %b %d %Y %k:%i:%s")

Truncated incorrect datetime value: 'Thu Apr 26 2018 00:00:22 GMT+0000'

Вам немного не хватает, часовой пояс и смещение.

str_to_date(date, "%a %b %d %Y %k:%i:%s GMT+0000")

Если вам повезло, и все ваши даты в Гринвиче, все готово.

Если нет, это совсем другой вопрос.

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