У меня есть таблица со следующим столбцом:
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
Как мне правильно настроить базу данных?
Большое спасибо.