【发布时间】:2018-06-01 13:00:59
【问题描述】:
我有一个列(字符串 (8)),其中包含 12032008 之类的数据,我必须将其显示为 12/03/2008。检索查询应该怎么做?
【问题讨论】:
-
理想情况下,您将其转换为
DATE列,然后以用户想要的任何古怪日期格式在客户端进行日期格式化。 -
12/03/2008是指 2008 年 12 月 3 日还是 2008 年 3 月 12 日?
我有一个列(字符串 (8)),其中包含 12032008 之类的数据,我必须将其显示为 12/03/2008。检索查询应该怎么做?
【问题讨论】:
DATE 列,然后以用户想要的任何古怪日期格式在客户端进行日期格式化。
12/03/2008 是指 2008 年 12 月 3 日还是 2008 年 3 月 12 日?
您在这里做的最合适的事情是停止在文本列中存储日期信息。相反,请将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;
【讨论】:
在mysql中首先使用STR_TO_DATE将其转换为日期对象,然后使用DATE_FORMAT格式化
SELECT DATE_FORMAT(STR_TO_DATE('12032008','%d%m%Y'),'%d/%m/%Y')
但理想情况下,您不应将日期或日期时间作为字符串保存在表中,这会使 mysql 和您的事情变得复杂
【讨论】: