it-swarm.com.de

Erhalten Sie eine zweistellige Zahl für den Monat

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?

45
Adam

es gibt verschiedene Möglichkeiten, dies zu tun 

  • Verwenden Sie RTRIM und geben Sie den range an:

mögen 

SELECT RIGHT('0' + RTRIM(MONTH('12-31-2012')), 2); 
  • Verwenden Sie Substring, um nur den month-Teil nach dem Konvertieren des Datums in Text zu extrahieren

mögen

SELECT SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2)

siehe Fiddle

Möglicherweise gibt es andere Möglichkeiten, dies zu erhalten.

67
Ankit Suhail

Funktion

FORMAT(date,'MM') 

wird die Arbeit mit zwei Ziffern erledigen.

53
user3829053

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)
13
SchmitzIT

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
6

Alternative zu DATEPART

SELECT LEFT(CONVERT(CHAR(20), GETDATE(), 101), 2)
3
John Woo

Einfach kann verwendet werden:

SELECT RIGHT('0' + CAST(MONTH(@Date) AS NVARCHAR(2)), 2)
2
Elias Hossain

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))
2
Saksham

Versuchen:

select right ('0'+convert(nvarchar(2), DATEPART(mm, getdate())),2 )
1
TechDo

CONVERT (char (2), getdate (), 101)

1
Vinay Mishra

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.

0
Offer

Für mich war die schnellste Lösung

DATE_FORMAT(CURDATE(),'%m')
0
Angelo Canepa