2015-01-14 1 views
5

ich meine C# -Code aus Performance-Gründen mit einer SQL-Abfrage zu ersetzen:Wie kann ich eine Datetime als ddMMyy auswählen, also ein zweistelliges Jahr?

CreatedAt.ToString("ddMMyy", System.Globalization.CultureInfo.InvariantCulture) 

gibt das Erstellungsdatum als 140115 (für heute). Einfach genug in C#, aber wie bekomme ich das in T-SQL?

ich versucht habe:

REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 103), '/', '') 

die fast richtig ist, aber das Jahr hat vier Ziffern statt zwei, so 14012015 statt 140115.

+0

ich dies besser wird ausführen nicht überzeugt verwenden können . Die Datentypkonvertierung ist in SQL Server ebenfalls nicht kostenlos. –

+0

@AaronBertrand: Es ist nicht die Datumskonvertierung, die Teil der Optimierung ist, sondern die Ersetzung von LINQ-To-SQL, wobei das Objekt komplexe Felder enthält, die von anderen Datenbankabfragen initialisiert werden. Jetzt benutze ich eine Ansicht, die alle relevanten Felder enthält. Es dauerte 20 Sekunden, um 100 Zeilen auszuwählen (100 Objekte laden), jetzt nur noch einen Bruchteil einer Sekunde. –

+1

Ok, das war nicht klar, es klang wie das Effizienzproblem war einfach die Formatierung in C# anwenden. –

Antwort

8

Wie der docs for CONVERT Zustand, 103 verwenden, wenn Sie das Jahrhundert und 3 wollen, wenn Sie nicht:

REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 3), '/', '') 
+0

Danke. Mir fehlte der Wald für die Bäume. –

+1

Jeden Tag sein neues Lernen in SO. –

3

du auch

SELECT REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 5), '-', '') 
Verwandte Themen