MySQL два формата даты в одном столбце - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть таблица со следующим столбцом:

CREATE TABLE `tweets` (
(...)
    `timestamp` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
(...)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

в этом столбце у меня есть два разных формата времени:

  • 2014-08-20 20: 17: 00
  • 18.04.2013 19: 57

Я пытаюсь создать новую таблицу с форматированными датами:

select
(...)   
case 
    when STR_TO_DATE(t.timestamp, '%Y-%m-%d %H:%i:%s') is null
        then STR_TO_DATE(t.timestamp, '%d.%m.%Y %H:%i') 
        else STR_TO_DATE(t.timestamp, '%Y-%m-%d %H:%i:%s')
end as timestamp,
(...)
from tweets;

Выбор кода работает отлично, и я до сих пор узнал, что в MySQL я не могу изменить способ хранения дат в базе данных, но я могу только изменить представление данных.

Однако ... Хранение дат в виде текста мне не кажется правильным. Когда я пытаюсь сохранить этот код, добавив:

create table `tweets_adj`
select 
(...)    >>>see above

Я получаю сообщение об ошибке Неправильное значение даты и времени: '18 .04.2013 19:57 'для функции str_to_date

Как мне правильно настроить базу данных?

Большое спасибо.

...