在T-SQL中提取月份和年份

时间:2015-03-20 04:31:26

标签: sql sql-server tsql

我需要在SQL Server中提取月份和年份。例如,如果日期是2015-01-01,我想将其设为201501并将其转换为varchar(6)

我该怎么做?

5 个答案:

答案 0 :(得分:2)

1. SELECT CONVERT(VARCHAR(6), GETDATE(), 112)

2. SELECT  CAST(YEAR(GETDATE()) * 100 + MONTH(GETDATE()) AS VARCHAR(6))

答案 1 :(得分:2)

试试这个:

SELECT DATEPART(yyyy, @date) * 100 + DATEPART(mm, @date)

如果您想对当前时间进行操作,请将@date替换为CURRENT_TIMESTAMP

结果是整数,您可以使用varchar(6)CAST()方法将其转换为CONVERT()

答案 2 :(得分:1)

尝试.. FIDDLE DEMO

declare @dt datetime='2015-01-01'
select CAST(YEAR(@dt)as Varchar(6))+
Case When Len(Cast(MONTH(@dt) as varchar(6)))>1 
then CAST(MONTH(@dt) as varchar(6)) Else 
'0'+Cast(MONTH(@dt) as varchar(6)) End

编辑:2

declare @dt date='2015-01-01' 
select CAST(REPLACE(@dt,'-','')as varchar(6))

答案 3 :(得分:1)

这是最简单的答案

select getdate() , convert( varchar(6) , getdate() ,112) 

如果你想要年份为2位

select getdate() , convert( varchar(12) , getdate() ,12)

每当您想将日期格式从标准格式转换为其他格式时,请务必查看此链接。

http://www.w3schools.com/sql/func_convert.asp

https://msdn.microsoft.com/en-us/library/ms187928.aspx

答案 4 :(得分:0)

select CONVERT(nvarchar(6), 
DATENAME(yyyy, getdate())) + 
SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2)

<强> DATENAME:

返回表示指定日期

的指定日期部分的字符串

<强> REF:

https://msdn.microsoft.com/en-IN/library/ms174395.aspx

对于所有日期时间转换,这将有助于

http://www.sqlusa.com/bestpractices/datetimeconversion/