我创建了一个视图,需要将日期时间转换为以下格式:
2011 06 (year, empty-space, two digit numeric month)
格式化它的最佳方法是什么?
这是日期时间(在视图的子查询中,“舍入”到月份):
DATEADD(month, DATEDIFF(month, 0,Claim_Submitted_Date), 0) AS Year_Month_Submit
这给了我年,月和日(当然01
因为日期时间四舍五入到第一天):
CONVERT(varchar,Year_Month_Submit,112)as Year_Month_Submit
提前谢谢
答案 0 :(得分:2)
select stuff(convert(varchar(6), Claim_Submitted_Date, 112), 5,0,' ')
Tim Schmelter的回答:
你可以比较这样的方法:
declare @i int = 0
declare @dummy varchar(20)
while @i < 1000000
begin
--set @dummy = stuff(convert(varchar(6), getdate() + @i / 1000, 112), 5,0,' ')
set @dummy = REPLACE(CONVERT(VARCHAR(7), getdate() + @i / 1000, 121), '-', ' ')
set @i = @i + 1
end
在我的服务器上,我的版本需要1秒钟而另一个版本需要3秒
答案 1 :(得分:1)
试试这个:
SELECT LTRIM(STR(YEAR(Claim_Submitted_Date))) + ' ' +
RIGHT('0'+ LTRIM(STR(MONTH(Claim_Submitted_Date))), 2)
FROM MyTable
答案 2 :(得分:1)
怎么样
STUFF(STUFF('YYYY 0M', 1, 4, YEAR(Claim_Submitted_Date)), 8 - LEN(MONTH(Claim_Submitted_Date)), 2, MONTH(Claim_Submitted_Date))
或者
REPLACE(CONVERT(VARCHAR(7), @Claim_Submitted_Date, 121), '-', ' ')