Konversi tanggal yyyy-mm-dd ke integer YYYYMM


17

Bagaimana saya bisa mengonversi @dateb:

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

yang mengembalikan 2014-04-04sebagai tanggal ke bilangan bulat dari201404

Terima kasih

Jawaban:


19

Pada versi 2012 atau lebih tinggi, Anda dapat menggunakan formatfungsi ini untuk mendapatkan tahun dan bulan, lalu gunakan sebagai int.

Pada versi sebelum 2012 Anda dapat melakukan pemformatan dengan convertfungsi tersebut, lalu dilemparkan sebagai 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

Mungkin sedikit lebih rapi:

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

1
Saya setuju dengan ini dengan sepenuh hati. Anda memiliki tanggal, yang memiliki subbidang bilangan bulat; Anda menginginkan bilangan bulat. Kenapa ada pemrosesan string?
Ross Presser

-1

Bisakah ini melakukan trik untuk Anda?

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

Ah maaf, saya lupa, Anda akan membutuhkan substring juga. Jadi begitu:

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


-1

Metode lain:

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);

Memberi: 20160229

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.