【问题标题】:How to display string as date? [duplicate]如何将字符串显示为日期? [复制]
【发布时间】:2018-06-01 13:00:59
【问题描述】:

我有一个列(字符串 (8)),其中包含 12032008 之类的数据,我必须将其显示为 12/03/2008。检索查询应该怎么做?

【问题讨论】:

  • 理想情况下,您将其转换为 DATE 列,然后以用户想要的任何古怪日期格式在客户端进行日期格式化。
  • 12/03/2008 是指 2008 年 12 月 3 日还是 2008 年 3 月 12 日?

标签: mysql sql


【解决方案1】:

您在这里做的最合适的事情是停止在文本列中存储日期信息。相反,请将12032008 放入真正的datetime 列。从长远来看,这将使您的生活更轻松。如果您不能在短期内做到这一点,这里有两个选择供您考虑。

简单的方法,只使用基本字符串函数:

SELECT
    CONCAT(LEFT(col, 2), '/', SUBSTRING(col, 3, 2), '/', RIGHT(col, 4)) AS output
FROM yourTable;

更长的方法,可能是更好的长期解决方案,是首先将您的日期字符串转换为日期,然后使用您想要的格式将其转换回字符串:

SELECT
    DATE_FORMAT(STR_TO_DATE(col, '%d%m%Y'), '%d/%m/%Y') AS output
FROM yourTable;

Demo

【讨论】:

    【解决方案2】:

    在mysql中首先使用STR_TO_DATE将其转换为日期对象,然后使用DATE_FORMAT格式化

    SELECT DATE_FORMAT(STR_TO_DATE('12032008','%d%m%Y'),'%d/%m/%Y')
    

    但理想情况下,您不应将日期或日期时间作为字符串保存在表中,这会使 mysql 和您的事情变得复杂

    Demo

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 2021-02-26
      • 2020-05-10
      相关资源
      最近更新 更多