我正在处理的数据,在我之前的开发人员一直很懒,没有以设置的格式存储日期。它以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/

10-10 10:54