一尘不染

从SQL中的未格式化文本解析日期

sql

我试图找出一种优雅的方式来从文本列中获取日期,该文本列中包含诸如“ YYYYMMDD”之类的数据…因此,我们可能希望在该列中看到“
20060508”作为值,我希望能够从查询返回的日期(2006年5月8日)。

我敢肯定,只要有足够的时间,我就可以将某些东西混在一起,但是我想到的方法似乎很笨拙,而且我怀疑有一种方法可以在单个查询中很好地完成。

有什么建议?


阅读 123

收藏
2021-05-05

共1个答案

一尘不染

这已经是有效日期-ISO-8601格式-只需使用:

SELECT CAST('20060508' AS DATETIME)

或者:

SELECT CONVERT(DATETIME, '20060508', 112)

那应该做得很好!

为了获得“ 2006年5月8日”的显示,请使用日期转换样式107进行另一个转换为varchar的操作:

SELECT CONVERT(VARCHAR(25), CAST('2006-05-08' AS DATETIME), 107)

有关在MS SQL中进行转换和转换的更多信息,请参见此处

2021-05-05