2013-01-08 22 views
27

Ich möchte Wert auswählen = 201301Convert Datum YYYYMM Format

select getdate(), cast(datepart(year, getdate()) as varchar(4))+cast(datepart(MONTH, getdate()) as varchar(2)) 

es gibt 20131

was ist der normale Weg, dies zu tun?

+0

Für weitere Informationen überprüfen Sie diesen Link es verschiedene Datumsformat sql Server unterstützt. https://msdn.microsoft.com/en-us/library/ms187928.aspx –

Antwort

30
SELECT LEFT(CONVERT(varchar, GetDate(),112),6) 
61
SELECT CONVERT(nvarchar(6), GETDATE(), 112) 
+6

Upvotes für diese Antwort! Viele, viele upvotes! – Kermit

+0

Dies ist eine sehr elegante Lösung! Daumen hoch – Nightmaresux

+1

Schön und einfach. Sie können Unicode auch löschen, wenn Sie möchten: 'SELECT CONVERT (varchar (6), GETDATE(), 112)' – jumxozizi

2

Eigentlich ist dies ist die richtige Art und Weise zu bekommen, was Sie wollen, es sei denn, Sie verwenden können, MS SQL 2014 (das schließlich benutzerdefinierte Formatstrings für Datumsangaben aktiviert).

Um yyyymm statt yyyym, können Sie diesen kleinen Trick:

select 
right('0000' + cast(datepart(year, getdate()) as varchar(4)), 4) 
+ right('00' + cast(datepart(month, getdate()) as varchar(2)), 2) 

Es ist schneller und zuverlässiger als gettings Teile convert(..., 112).

1

Sie Ihr Datum in vielen Formaten konvertieren können, zum Beispiel:

CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016 
CONVERT(NVARCHAR(10), DATE_OF_DAY, 3) => 15/09/16 

Syntaxe:

CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' *) 
  • Der Code ist eine ganze Zahl, hier 3 ist die dritte Formating ohne Jahrhundert, wenn Sie wollen das Jahrhundert ändern Sie einfach den Code auf 103.

In Ihrem Fall, habe ich nur umgewandelt und beschränken Größe von nvarchar (6) wie folgt aus:

CONVERT(NVARCHAR(6), DATE_OF_DAY, 112) => 201609 

Mehr unter: http://www.w3schools.com/sql/func_convert.asp

0

Eine effizientere Methode, die eher integer math verwendet als Strings/Varchars, das eher in einem int-Typ führen wird als ein String-Typ ist:

SELECT YYYYMM = (YEAR(GETDATE()) * 100) + MONTH(GETDATE()) 

addiert zwei Nullen auf der rechten Seite des Jahres und fügt dann den Monat zu den addierten zwei Nullen.