Ich habe eine ganzzahlige Spalte "Monat" Ich möchte für den Monat eine 2-stellige Zahl erhalten.
Das habe ich versucht: DATEPART (mm, @Date)
Es gibt eine Ziffer für Monate Januar bis September zurück Ich verwende SQL Server 2008
Hat jemand einen Vorschlag?
es gibt verschiedene Möglichkeiten, dies zu tun
mögen
SELECT RIGHT('0' + RTRIM(MONTH('12-31-2012')), 2);
mögen
SELECT SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2)
siehe Fiddle
Möglicherweise gibt es andere Möglichkeiten, dies zu erhalten.
Funktion
FORMAT(date,'MM')
wird die Arbeit mit zwei Ziffern erledigen.
Pinal Dave hat einen schönen Artikel mit einigen Beispielen, wie man nachgestellte 0s zu SQL-Nummern hinzufügt .
Eine Möglichkeit ist die Verwendung der RIGHT
-Funktion, die die Anweisung in etwa wie folgt aussehen lässt:
SELECT RIGHT('00' + CAST(DATEPART(mm, @date) AS varchar(2)), 2)
Ein weiterer einfacher Trick:
SELECT CONVERT(char(2), cast('2015-01-01' as datetime), 101) -- month with 2 digits
SELECT CONVERT(char(6), cast('2015-01-01' as datetime), 112) -- year (yyyy) and month (mm)
Ausgänge:
01
201501
Einfach kann verwendet werden:
SELECT RIGHT('0' + CAST(MONTH(@Date) AS NVARCHAR(2)), 2)
fügen Sie 0 hinzu, indem Sie prüfen, ob der Wert zwischen 1 und 9 liegt, indem Sie ihn zuerst an varchar gießen
select case when DATEPART(month, getdate()) between 1 and 9
then '0' else '' end + cast(DATEPART(month, getdate()) as varchar(2))
Versuchen:
select right ('0'+convert(nvarchar(2), DATEPART(mm, getdate())),2 )
CONVERT (char (2), getdate (), 101)
Meine Art es zu tun ist:
right('0'+right(datepart(month,[StartDate]),2),2)
Der Grund für die interne 'rechte' Funktion besteht darin, zu verhindern, dass SQL dies als mathematische Addition ausführt - was uns wieder eine Ziffer hinterlässt.
Für mich war die schnellste Lösung
DATE_FORMAT(CURDATE(),'%m')