将日期转换为YYYYMM格式

lov*_*iji 45 sql t-sql sql-server

我想选择值= 201301

select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))
Run Code Online (Sandbox Code Playgroud)

它返回 20131

这样做的正常方法是什么?

Ham*_*yan 88

SELECT CONVERT(nvarchar(6), GETDATE(), 112)
Run Code Online (Sandbox Code Playgroud)

  • 赞成这个答案!很多很多赞成! (7认同)
  • 很好,很简单.如果需要,你也可以删除unicode:`SELECT CONVERT(varchar(6),GETDATE(),112)` (3认同)

Hog*_*gan 50

SELECT LEFT(CONVERT(varchar, GetDate(),112),6)
Run Code Online (Sandbox Code Playgroud)


D-S*_*hih 19

我知道这是一个古老的话题,但如果您的SQL server版本高于2012年.

还有另一个简单的选项可以选择,FORMAT功能.

SELECT FORMAT(GetDate(),'yyyyMM')
Run Code Online (Sandbox Code Playgroud)

sqlfiddle

  • 在所有答案中,仅看一下就很容易理解,也可以根据需要轻松进行修改。+1 (2认同)

Bil*_*ham 5

一种更有效的方法是使用整数数学而不是字符串/varchars,这将产生 int 类型而不是字符串类型:

SELECT YYYYMM = (YEAR(GETDATE()) * 100) + MONTH(GETDATE())
Run Code Online (Sandbox Code Playgroud)

在年份右侧添加两个零,然后将月份添加到添加的两个零。