0

我有一张桌子,其中包括以下列:

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' for function str_to_date

如何以正确的方式设置我的数据库?

太感谢了。

4

0 回答 0