2016-04-12 16 views
2

Ich habe Probleme mit meiner Abfrage. Ich habe einen Code, der ursprünglich aus MYSQL stammt, aber ich habe ihn auf Sql Server migriert. Nun weiß ich nicht, ob es in SQL SERVER ein direktes Äquivalent von% x-% u gibt.MYSQL date_format '% x-% u' entspricht in SQL Server

select date_format(date,'%x-%u') AS DATE from date_info WHERE Status = 1; 

Die Abfrage sollte YEAR-WEEKNUMBER zurückzukehren, in das Jahr das Jahr von der Datenbank und WEEK NUMBER ist die Wochennummer auf den Werten abhängig und Montag ist der erste Tag der Woche.

Beispielwert für date in der Datenbank ist 2008-01-05 09:48:03.

Und ich möchte ein Ergebnis von 2008-1 haben.

Ich versuchte die DATEPART Funktion und FORMAT Funktion in SQL Server, aber ich kann immer noch nicht die Lösung finden, die ich wollte. Ich habe DATEPART(ISOWK,date) gefunden, aber es gibt nur die Wochennummer zurück.

Ich möchte das 2008-1 Ergebnis.

Kann mir jemand dabei helfen?

Antwort

1

Verwenden Sie DATEPART() und isowk Format, die die Woche des Jahres zurückgeben sollte.

Wie in den Kommentaren von @ZoharPeled gemerkt, benötigt diese Abfrage einen Cast zu char, das ist die Arbeitsabfrage.

+0

Versucht, dies auszuführen, aber es kehrt nur 2008 zurück. Nicht 2008-1. Aber die Abfrage hat keinen Fehler. :) Wie kommt das zustande? – WhiteMark

+0

@WhiteMark Versuchen Sie es jetzt. – sagi

+0

versuche, Cast als Zeichen (4) zum Jahr hinzuzufügen und als Zeichen (2) in die Woche zu werfen: 'SELECT CAST (DATEPART (JAHR, [Datum]) wie char (4)) + '-' + CAST (DATEPART (ISO_WEEK, [Datum]) wie char (2)) ' –