我正在处理的数据,在我之前的开发人员一直很懒,没有以设置的格式存储日期。它以varchar形式出现,而不是datetime。不用说,这让我需要整理数据。
有两种格式
1) {dd}/{mm}/{yyyy} {hh}:{mm}
2) {dd}.{mm}.{yyyy} {hh}:{mm}
我想确保它总是以mysql日期格式返回。下面的查询将得到第一个。
SELECT
str_to_date( a.rentalstart, '%d/%m/%Y %k:%i' ),
a.*
FROM
jupiter1.table a
ORDER by createtime DESC
我怎么把两者结合起来?如果匹配的话,我还需要它默认为一个普通的mysql日期时间。
{yyyy}-{mm}-{dd} {hh}:{mm}:{ss}
最佳答案
SELECT CASE WHEN a.rentalstart LIKE "%/%/% %:%"
THEN str_to_date( a.rentalstart, '%d/%m/%Y %k:%i' )
WHEN a.rentalstart LIKE "%.%.% %:%"
THEN str_to_date( a.rentalstart, '%d.%m.%Y %k:%i' )
ELSE CAST(a.rentalstart AS DATETIME)
END AS rentalstart_good,
a.*
FROM ...
关于mysql - MySQL-存储的日期格式不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17829383/