Wie kann ich @dateb konvertieren:
SET @dateb = dateadd(month, datediff(month, 0, getdate()) - 3, 0)
das gibt 2014-04-04als Datum eine ganze Zahl von zurück201404
Vielen Dank
Wie kann ich @dateb konvertieren:
SET @dateb = dateadd(month, datediff(month, 0, getdate()) - 3, 0)
das gibt 2014-04-04als Datum eine ganze Zahl von zurück201404
Vielen Dank
Antworten:
Ab Version 2012 können Sie die formatFunktion verwenden, um nur Jahr und Monat abzurufen und sie dann als int umzuwandeln.
In Versionen vor 2012 können Sie die Formatierung mit der convertFunktion vornehmen und dann als int umwandeln.
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
Vielleicht etwas aufgeräumter:
SELECT YEAR(@dateb)*100 + MONTH(@dateb);
Könnte dies den Trick für Sie tun?
set @dateb = cast(convert(varchar, dateadd(month, datediff(month, 0, getdate()) - 3, 0), 112) as int)
Entschuldigung, ich habe vergessen, du brauchst auch einen Teilstring. So ist es:
select cast(substring(convert(varchar, dateadd(month, datediff(month, 0, getdate()) - 3, 0), 112), 0, 7) as int)
Eine andere Methode:
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);
Gibt: 20160229
FORMAT()im Allgemeinen vermeiden . YMMV.