Zum Inhalt springen

CONVERT STRING --> DATE, klappt nicht?


Sven Eichler

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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! :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...