Sven Eichler Geschrieben 9. März 2012 Teilen Geschrieben 9. März 2012 Hallo zusammen, ich hab gegoogelt, die Hilfe benutzt, hier auf dem Board gesucht und bin mittlerweile der Meinung, dass mich der Server einfach nicht mag... :floet: Folgendes Problem (SQL2008R2): Ich habe ein NVARCHAR-Feld auf einer Datenbank, das so aufgebaut ist: XXXXXX2012-03-09XXXXXXXXXXXX Aus diesem Feld möchte ich nun das "Datum" in einer Anwendung darstellen, mit einer Deutschen Datumsformatierung, hier also: 09.03.2012. Hier meine kläglichen Versuche: 1.) SELECT CAST((SUBSTRING(<FIELDNAME>, 7, 10)) as date) as 'Geändert am' from <TABLENAME> 2.) select CONVERT(date, (SUBSTRING(<FIELDNAME>, 7, 10)), 104) from <TABLENAME> Ich bekomme es aber einfach nicht hin, dass mir das Deutsche Datumsformat ausgegeben wird, und habe so ziemlich alles versucht, was ich im Internet und der Hilfe gefunden habe... Entweder gibt es einen Converting-Fehler (Msg. 241, Level 16), oder aber ich bekomme den Teil herausgeschnitten, nicht aber in das korrekte Format. Sehe ich das richtig, dass ich mit dem "Date" im CONVERT das "Zielformat" setze, dann den Wert nenne und mit z.B. der "104" die Style (104 = Deutschland)? Danke für Eure Hilfe, Gruß Sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
el_pollo_diablo Geschrieben 9. März 2012 Teilen Geschrieben 9. März 2012 Hallo, gleich der erste Treffer in Google (SQL Server Helper - Tips and Tricks - Date Formats) hat das Problem gelöst: DECLARE @teststring varchar(50) DECLARE @testdate date SET @teststring = 'XXXXXX2012-03-09XXXXXXXXXXXX' SET @testdate = SUBSTRING(@teststring, 7, 10) print CONVERT(VARCHAR(8), @testdate, 4) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 11. März 2012 Teilen Geschrieben 11. März 2012 Hi, du musst den String 2x typecasten, einmal den String zum date, dann das date wieder zum String in der richtigen formatierung. SELECT CONVERT(varchar(12), CONVERT(date, SUBSTRING(<FIELDNAME>, 7, 10), 120) ,104) from <TABLENAME> das snipped von el_pollo funktioniert, weil durch die variablen zuweisung der typecast impliziert wird. Wobei es immer besser ist, das format anzugeben, anstatt sich auf die server und session language settings zu verlassen. Das ganze funktioniert aber nur, wenn du weist wo im String dein Datum steht. Sobald das variabel wird, musst du dir eine Funktion schreiben, die das Datum erstmal findet. Das könntest du in SQL lösen (wär aber langsam) oder eine CLR dafür schreiben. In .Net wäre das per Regex in 5 Zeilen gegessen. Gruß Sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sven Eichler Geschrieben 12. März 2012 Autor Teilen Geschrieben 12. März 2012 Hallo zusammen, zuerst mal vielen Dank für die Hilfe, es war die zweite Lösung, die ich gesucht hatte, da ich es möglichst simpel halten wollte. Es handelt sich hierbei um eine dynamische Abfrage in einer Anwendung, daher wollte ich eher ungern mit Variablen etc. arbeiten. Aber wie gesagt, nochamls vielen Dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.