Comment puis-je convertir @dateb:
SET @dateb = dateadd(month, datediff(month, 0, getdate()) - 3, 0)
qui renvoie 2014-04-04
comme date un entier de201404
Merci
Comment puis-je convertir @dateb:
SET @dateb = dateadd(month, datediff(month, 0, getdate()) - 3, 0)
qui renvoie 2014-04-04
comme date un entier de201404
Merci
Réponses:
Sur la version 2012 ou supérieure, vous pouvez utiliser la format
fonction pour obtenir uniquement l'année et le mois, puis la convertir en entier.
Sur les versions antérieures à 2012, vous pouvez effectuer le formatage avec la convert
fonction, puis convertir en 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
Peut-être un peu plus ordonné:
SELECT YEAR(@dateb)*100 + MONTH(@dateb);
Cela pourrait-il faire l'affaire pour vous?
set @dateb = cast(convert(varchar, dateadd(month, datediff(month, 0, getdate()) - 3, 0), 112) as int)
Ah désolé, j'ai oublié, vous aurez aussi besoin d'une sous-chaîne. Alors c'est:
select cast(substring(convert(varchar, dateadd(month, datediff(month, 0, getdate()) - 3, 0), 112), 0, 7) as int)
Une autre méthode:
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);
Donne: 20160229
FORMAT()
, en général . YMMV.