日付yyyy-mm-ddを整数YYYYMMに変換します


回答:


19

バージョン2012以降では、format関数を使用して年と月だけを取得し、intとしてキャストできます。

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
私はこれに心から同意します。整数のサブフィールドを持つ日付があります。整数が必要です。いったいなぜ文字列処理を行うのですか?
ロスプレッサー

-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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.