Yyyy-aa-gg tarihini YYYYMM tamsayıya dönüştür


17

@Dateb'ı nasıl dönüştürebilirim:

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

2014-04-04tamsayıya tarih olarak dönen201404

Teşekkürler

Yanıtlar:


19

2012 veya daha yeni bir sürümde, formatişlevi yalnızca yıl ve ay almak için kullanabilir ve ardından int olarak yayınlayabilirsiniz.

2012 öncesi sürümlerde biçimlendirmeyi convertişlevle yapabilir, ardından int olarak yayınlayabilirsiniz.

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

Belki biraz daha düzenli:

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

1
Buna yürekten katılıyorum. Tamsayı alt alanlarına sahip bir tarihiniz var; bir tam sayı istiyorsunuz. Neden dünya üzerinde herhangi bir ip işleme var?
Ross Presser

-1

Bu senin için hile yapabilir mi?

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

Ah özür dilerim, bir alt dizeye de ihtiyacınız olacak. Bu nedenle bu:

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


-1

Diğer yöntem:

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

Veriler: 20160229

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.