我要选择价值= 201301
转换日期为YYYYMM格式
select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))
返回20131
什么是正常的方式做到这一点?
我要选择价值= 201301
转换日期为YYYYMM格式
select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2))
返回20131
什么是正常的方式做到这一点?
SELECT LEFT(CONVERT(varchar, GetDate(),112),6)
这是第1个月,所以你会得到预期的价值。你必须ZEROPAD月(1 - > 01),按这样的回答:How do I convert an int to a zero padded string in T-SQL?
SELECT CONVERT(nvarchar(6), GETDATE(), 112)
Upvotes for this answer!许多,许多upvotes! – Kermit
这是非常优雅的解决方案!竖起大拇指 – Nightmaresux
不错,简单。如果你想要的话,你也可以删除unicode:'SELECT CONVERT(varchar(6),GETDATE(),112)' – jumxozizi
其实,这是的适当的方式得到你想要的东西,除非你能使用MS SQL 2014(最终为日期时间启用自定义格式字符串)。
要获得yyyymm
而不是yyyym
,你可以使用这个小窍门:
select
right('0000' + cast(datepart(year, getdate()) as varchar(4)), 4)
+ right('00' + cast(datepart(month, getdate()) as varchar(2)), 2)
这比convert(..., 112)
gettings零件更快,更可靠。
你可以把你的日期在多种格式,例如:
CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
CONVERT(NVARCHAR(10), DATE_OF_DAY, 3) => 15/09/16
Syntaxe:
CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' *)
在你的情况,我刚转换,并限制由nvarchar的尺寸(6)所示:
CONVERT(NVARCHAR(6), DATE_OF_DAY, 112) => 201609
一种更有效的方法,使用整数运算,而不是串/ VARCHAR处理,这将导致一个int类型,而不是一个字符串类型是:
SELECT YYYYMM = (YEAR(GETDATE()) * 100) + MONTH(GETDATE())
添加两个零到今年的右侧,然后每月增加还增加了两个零。
欲了解更多信息,请查看此链接列表不同的日期格式sql服务器支持。 https://msdn.microsoft.com/en-us/library/ms187928.aspx –