it-swarm.com.de

Wie bekomme ich den Monat und den Tag mit führenden Nullen in SQL? (z. B. 9 => 09)

DECLARE @day CHAR(2)

SET @day = DATEPART(DAY, GETDATE())

PRINT @day

Wenn heute der 9. Dezember wäre, würde "9" oben angezeigt.

Ich möchte "09" drucken. Wie mache ich das?

45
Rj.

Füllen Sie es mit 00 auf und nehmen Sie die rechte 2:

DECLARE @day CHAR(2)

SET @day = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)

print @day
79
twoleggedhorse

Verwenden Sie SQL Server-Datumsstile, um Ihre Datumswerte vorab zu formatieren.

SELECT
    CONVERT(varchar(2), GETDATE(), 101) AS monthLeadingZero  -- Date Style 101 = mm/dd/yyyy
    ,CONVERT(varchar(2), GETDATE(), 103) AS dayLeadingZero   -- Date Style 103 = dd/mm/yyyy
22
Michael Dawson

Für SQL Server 2012 und höher mit führenden Nullen:

 SELECT FORMAT(GETDATE(),'MM') 

ohne:

SELECT    MONTH(GETDATE())
17
Sajjan Sarkar

Versuche dies : 

SELECT CONVERT(varchar(2), GETDATE(), 101)
8
Andrew

Führende 0 Tage

SELECT FORMAT(GetDate(), 'dd')
4
Chris
Select Replicate('0',2 - DataLength(Convert(VarChar(2),DatePart(DAY, GetDate()))) + Convert(VarChar(2),DatePart(DAY, GetDate())

Weit sauberer, sagt er, nachdem er die Zunge von der Wange genommen hatte.

Normalerweise, wenn Sie solche Dinge in SQL beginnen müssen, müssen Sie von can I zu I wechseln.

1
Tony Hopkinson
DECLARE @day CHAR(2)

SET @day = right('0'+ cast(day(getdate())as nvarchar(2)),2)

print @day
0
Sham Sunder
SELECT RIGHT('0' 
             + CONVERT(VARCHAR(2), Month( column_name )), 2) 
FROM   table 
0
Dss

Rollen Sie Ihre eigene Methode

Dies ist ein generischer Ansatz für die linke Polsterung. Das Konzept besteht darin, REPLICATE zu verwenden, um eine Version zu erstellen, die nur den aufgefüllten Wert darstellt. Verketten Sie es dann mit dem tatsächlichen Wert, und verwenden Sie einen isnull/coalesce-Aufruf, wenn die Daten NULL-fähig sind. Sie haben jetzt eine Zeichenfolge, die die Zielgröße verdoppelt, und zwar genau auf die Ziellänge oder irgendwo dazwischen. Jetzt müssen Sie einfach die ganz rechten Buchstaben abschneiden, und Sie haben eine links aufgefüllte Zeichenfolge.

SELECT RIGHT(REPLICATE('0', 2) + CAST(DATEPART(DAY, '2012-12-09') AS varchar(2)), 2) AS leftpadded_day

Gehen Sie heimisch

Die Funktion CONVERT bietet verschiedene Methoden zum Abrufen vorformatierter Daten. Format 103 spezifiziert dd, was bedeutet, dass die führende Null beibehalten wird. Sie müssen also nur die ersten beiden Zeichen ausschneiden.

SELECT CONVERT(char(2), CAST('2012-12-09' AS datetime), 103) AS convert_day
0
billinkc