PDA

Vollständige Version anzeigen : Unstring auf alphanumerische Felder


alexart
03.12.2001, 09:58
Hallo,

mir liegt ein Datum in einem alphanumerischen Feld im Format (yyyymmtt) vor. Wie kann ich in SQL den Tag, den Monat und das Jahr in andere Felder einfügen?

Danke Alex

Joachim Hofmann
17.12.2001, 18:30
Siehe


Wenn Du den Teil eines Strings in SQL Server suchtst:

Syntax
SUBSTRING(expression, start, length)

in der SQL Server Hilfe.

Lord Hirni V2
07.11.2007, 15:39
Hallo,
ich habe folgenden "älteren" Eintrag gefunden und "möchte" ihn doch mal weiterführen.

Ich bin ein Newbe in MS-SQL und versuche gerade die ersten Schritte.

Mir liegt ebenfalls das Datum in folgender Form als Zahl vor: "YYYYMMTT".
Damit ich damit arbeiten kann, benötige ich es als Datumswert.

In Access-Abfragen bin ich bisher folgendermaßen vorgegangen:
DatumsAngabe: DatWert(Teil([DatumAlsZahl];7;2) & "." & Teil([DatumAlsZahl];5;2) & "." & Teil([DatumAlsZahl];1;4))
bzw. in der SQL-Ansicht:
DateValue(Mid([DatumAlsZahl],7,2) & "." & Mid([DatumAlsZahl],5,2) & "." & Mid([DatumAlsZahl],1,4)) AS DatumsAngabe

Wie muss es den in MS-SQL aussehen?

Mein Versuch war folgender, jedoch ohne Erfolg, da das Feld als Zahl formatiert ist und nicht als Text vorliegt.

SUBSTRING(DatumAlsZahl, 7, 2) + '.' + SUBSTRING(DatumAlsZahl, 5, 2) + '.' + SUBSTRING(DatumAlsZahl, 1, 4) AS DatumsAngabe

Und wie bekomme ich es hin, dass es als Datum "erkannt" wird?
Insbesondere habe ich mittlerweile (bei der Recherche für das Thema) gelesen, dass in MS-SQL (noch) das Datum inkl. Uhrzeit hinterlegt wird, was ja in dem bisherigen Lösungsansatz nicht vorhanden ist.

VIELEN DANK

Gruß
Dan

Josef P.
07.11.2007, 15:54
DECLARE @DatStr as varchar(8)
SET @DatStr = '20071007'

SELECT convert(datetime,@DatStr,112)

Lord Hirni V2
07.11.2007, 16:49
VIELEN DANK

das hat mir auf die Sprünge geholfen.
Ich habe die Umsetzung in der "Sicht" folgendermaßen umgesetzt:

Abfrage-Ansicht:
CONVERT (datetime; CAST(DatumAlsZahl AS varchar(8)); 112)
SQL-Ansicht:
CONVERT(datetime, CAST(DatumAlsZahl AS varchar(8)), 112) AS Datum_Test_6

(Unterscheidung der Ansichten: ";" und "," ... als Hinweis für andere Newbe, wie mir. ;) )

Gruß
Dan

Lord Hirni V2
08.11.2007, 17:09
Hallo,

hier noch eine weitere Frage für die Datumskonvertierung:

In der Tabelle kann es sein, dass kein Datum in Form der Zahl bzw. Zeichen "YYYYMMTT" hinterlegt ist, sondern nur der Wert "0".
Dann steigt die Sicht auf die Tabelle aus, mit dem Hinweis

Fehler bei der SQL-Ausführung.
Ausgeführte SQL-Anweisung: SELECT ....<Spaltenaufstellung>...
Fehlerquelle: .Net SqlClient Data Provider
Fehlermeldung: Fehler beim Konvertieren einer Zeichenfolge in einen datetime-Wert.

Wie kann das umgangen werden?
Wie ist das vorgehen bei NULL-Feldern (leeren Feldern)?

VIELEN VIELEN DANK

Gruß
Dan

Lord Hirni V2
08.11.2007, 17:41
Hallo,

erst suche ich ewig für eine Lösung, dann mache ich hier einen Eintrag und "kurz" darauf finde ich die Lösung selber ... naja, nun möchte ich auch die Lösung hier zeigen:

Als Standarddatum habe ich im Beispiel den 01.01.2006 für Felder, wo kein Wert vorhanden ist, herangezogen.

CASE DatumAlsZahl WHEN 0 THEN '2006-01-01' ELSE (CONVERT(datetime, CAST(DatumAlsZahl AS varchar(8)), 112)) END AS DatumsAngabe

(Die NULL-Lösung müsste ja (hoffentlich) ähnlich sein.)

Gruß
Dan