Jump to content

CONVERT STRING --> DATE, klappt nicht?

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

Diesen Beitrag teilen


Link zum Beitrag
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)

Diesen Beitrag teilen


Link zum Beitrag
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

Diesen Beitrag teilen


Link zum Beitrag
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! :)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

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


Fachinformatiker.de, 2020 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

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

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung