Sql server 2005 从datetime获取年和月(作为int)
我创建了一个视图,需要将datetime转换为以下格式:Sql server 2005 从datetime获取年和月(作为int),sql-server-2005,tsql,date-format,Sql Server 2005,Tsql,Date Format,我创建了一个视图,需要将datetime转换为以下格式: 2011 06 (year, empty-space, two digit numeric month) 格式化它的最佳方式是什么 以下是日期时间(在视图的子查询中,“四舍五入”为月份): 这给了我年、月和日(当然是因为datetime四舍五入到月的第一天): 提前谢谢你试试这个: SELECT LTRIM(STR(YEAR(Claim_Submitted_Date))) + ' ' + RIGHT('0'+ LTRI
2011 06 (year, empty-space, two digit numeric month)
格式化它的最佳方式是什么
以下是日期时间(在视图的子查询中,“四舍五入”为月份):
这给了我年、月和日(当然是因为datetime四舍五入到月的第一天):
提前谢谢你试试这个:
SELECT LTRIM(STR(YEAR(Claim_Submitted_Date))) + ' ' +
RIGHT('0'+ LTRIM(STR(MONTH(Claim_Submitted_Date))), 2)
FROM MyTable
试试这个:
SELECT LTRIM(STR(YEAR(Claim_Submitted_Date))) + ' ' +
RIGHT('0'+ LTRIM(STR(MONTH(Claim_Submitted_Date))), 2)
FROM MyTable
怎么样
STUFF(STUFF('YYYY 0M', 1, 4, YEAR(Claim_Submitted_Date)), 8 - LEN(MONTH(Claim_Submitted_Date)), 2, MONTH(Claim_Submitted_Date))
或
怎么样
STUFF(STUFF('YYYY 0M', 1, 4, YEAR(Claim_Submitted_Date)), 8 - LEN(MONTH(Claim_Submitted_Date)), 2, MONTH(Claim_Submitted_Date))
或
对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
声明@i int=0
声明@dummy varchar(20)
而@i<1000000
开始
--set@dummy=stuff(convert(varchar(6),getdate()+@i/1000112),5,0',)
set@dummy=REPLACE(CONVERT(VARCHAR(7),getdate()+@i/1000121),'-','')
设置@i=@i+1
终止
在我的服务器上,我的版本需要1秒,另一个版本需要3秒
对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
声明@i int=0
声明@dummy varchar(20)
而@i<1000000
开始
--set@dummy=stuff(convert(varchar(6),getdate()+@i/1000112),5,0',)
set@dummy=REPLACE(CONVERT(VARCHAR(7),getdate()+@i/1000121),'-','')
设置@i=@i+1
终止
在我的服务器上,我的版本需要1秒,另一个版本需要3秒,这两种方法都有效,第一种我更喜欢t-clausen的方法。两种方法都有效,第一种我更喜欢t-clausen的方法。同样有效。我不确定你的方法还是p.campbell的方法更好。效果也不错。我不确定你的方法还是p.campbell的方法更好。效果很好,但我接受了t-clausen的方法,因为它不那么冗长。谢谢。效果很好,但我接受了t-clausen的方法,因为它没有那么冗长。非常感谢。
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