将日期yyyy-mm-dd转换为整数YYYYMM


17

如何转换@dateb:

SET @dateb = dateadd(month, datediff(month, 0, getdate()) - 3, 0)

2014-04-04作为日期返回为整数201404

谢谢

Answers:


19

在2012版或更高版本上,您可以使用format函数获取年份和月份,然后将其转换为整数。

在2012年之前的版本中,您可以使用convert函数进行格式化,然后将其转换为int。

declare @dateb datetime
set @dateb = getdate()

select cast(format(@dateb,'yyyyMM') as int) --2012 or higher
select cast(convert(varchar(6),@dateb,112) as int) -- all versions


13

也许有点整洁:

SELECT YEAR(@dateb)*100 + MONTH(@dateb);

1
我完全同意这一点。您有一个日期,其中包含整数子字段;你想要一个整数。为什么到底要进行字符串处理?
Ross Presser

-1

这可以帮到您吗?

set @dateb = cast(convert(varchar, dateadd(month, datediff(month, 0, getdate()) - 3, 0), 112) as int)

抱歉,我忘了,您也需要一个子字符串。所以是:

select cast(substring(convert(varchar, dateadd(month, datediff(month, 0, getdate()) - 3, 0), 112), 0, 7) as int)


-1

另一种方法:

DECLARE @PeriodToCalculate_DATE [DATE] ='2016-02-29'

SELECT 
   CAST(DATEPART(YYYY,@PeriodToCalculate_DATE) AS [CHAR](4))
       + RIGHT('0' + CAST(DATEPART(M,@PeriodToCalculate_DATE) AS [VARCHAR](2)),2)  
       + RIGHT('0' + CAST(DATEPART(D,@PeriodToCalculate_DATE) AS [VARCHAR](2)),2);

给出:20160229

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.