这个问题在这里已有答案:
我有一个列(字符串(8))包含12032008之类的数据,我必须将其显示为12/03/2008。我该怎么做检索查询?
在mysql中首先使用STR_TO_DATE
将其转换为日期对象,然后格式化使用DATE_FORMAT
SELECT DATE_FORMAT(STR_TO_DATE('12032008','%d%m%Y'),'%d/%m/%Y')
但理想情况下,您不应将日期或日期时间保存为表中的字符串,这将使mysql和您的事情变得复杂
您在这里做的最合适的事情是停止在文本列中存储日期信息。相反,把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;