【发布时间】:2012-04-09 09:12:34
【问题描述】:
只是想知道是否有人可以帮助我将格式为 YYYYMM 的年/月 INT 列格式化为具有短月份的用户友好日期,例如一月、二月而不是数字。
几个例子:
201101 至 2011 年 1 月
201312 至 2013 年 12 月
不用担心,我可以对组件进行子串化,我只是不知道如何将 01 转为 Jan。
编辑:
根据@Karl 的回答,这就是我想出的——它非常难看,但它有效:
DECLARE @Test INT
SET @Test = 201206
SELECT SUBSTRING(DATENAME(month, DATEADD(month, CAST(SUBSTRING(CAST(@TEST AS VARCHAR), 5, 2) AS INT) - 1 , CAST('2008-01-01' AS datetime))),1,3) + ' ' + SUBSTRING(CAST(@Test AS VARCHAR),1,4) as Test
【问题讨论】:
-
SELECT LEFT(DATENAME(m, [Value] % 100), 3) + STR([Value] / 100, 5) -
@alex - 抱歉,这不起作用 - SELECT LEFT(DATENAME(m, 201206 % 100), 3) + STR(201206 / 100, 5) 产生 - 2012 年 1 月......它应该2012 年 6 月
-
对不起,应该是
SELECT LEFT(DATENAME(m, DATEADD(m, 201206 % 100, -1)), 3) + STR(201206 / 100, 5)
标签: sql-server-2008 datetime date-formatting