Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenführen ? (https://www.delphipraxis.net/129512-sql-spalten-zu-einer-datums-zeit-spalte-zusammenfuehren.html)

HolgerCW 20. Feb 2009 11:01

Datenbank: ORACLE • Version: 10 • Zugriff über: BDE

SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenführen
 
Hallo zusammen,

ich habe 6 Spalten. In Spalte eins ist der Tag, in Spalte zwei der Monat, in Spalte 3 das Jahr, in Spalte 4 die Stunden, in Spalte 5 die Minuten und in Spalte 6 die Sekunden.

So habe ich diese Spalten zu einer Spalte bisher zusammengeführt:

Delphi-Quellcode:
(SUBSTR(VAM.DEF14,7,2) || '.' || SUBSTR(VAM.DEF14,5,2) || '.' || SUBSTR(VAM.DEF14,1,4) || ' ' || SUBSTR(VAM.DEF14,9,2) || ':' || SUBSTR(VAM.DEF14,11,2) || ':' || SUBSTR(VAM.DEF14,13,2)) AS DATUM
Somit erhalte ich aber einen String-Wert. Wie kann ich diesen Wert nun innerhalb der SQL-Abfrage in einen DATETIME-Wert umwandeln ?

Zusatz:

Im Endeffekt ist es nur eine MEMO-Spalte, in der ein Datum mit Uhrzeit in dem Format vorliegt: 20071122210629 -> 22.11.2007 21:06:29

Vielleicht weiss ja auch jemand wie ich das direkt umwandeln kann in einen DATETIME-Wert

Gruss

Holger

mquadrat 20. Feb 2009 11:04

Re: SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenfü
 
Also in Firebird heißt der Befehl CAST(XY AS DATE), aber wie man das in Oracle macht bin ich überfragt. Aber vielleicht hilft das Stichwort Cast ja beim Suchen ;)

HolgerCW 20. Feb 2009 11:07

Re: SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenfü
 
In ORACLE nutze ich normalerweise TO_DATE, aber das geht bei dem vorliegenden FORMAT nicht.

Jürgen Thomas 20. Feb 2009 11:11

Re: SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenfü
 
Aber Du wirst doch das von Oracle erwartete Format eines Datums-Strings kennen (oder finden). Dann erzeuge doch einen solchen String (anstelle der obigen Version) und wende darauf TO_DATE an.

Bei MS-SQL gibt es CONVERT-Methoden, mit denen auch spezielle Formatierungen angegeben werden können. Vielleicht findest Du bei Oracle etwas Ähnliches.

Gruß Jürgen

nahpets 20. Feb 2009 11:16

Re: SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenfü
 
Hallo,

guckst Du bitte hier: download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions183.htm
oder hier: www.dba-oracle.com/f_to_date.htm
Die bei der zweiten URL aufgelisteten Varianten für To_Date solltest Du per SQL generiert bekommen.

HolgerCW 20. Feb 2009 11:34

Re: SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenfü
 
Die oben aufgeführte Abfrage liefert ja das hier:

z.B.: 20.02.2009 12:18:45

Wenn ich darauf dann TO_DATE anwende kommt die Fehlermeldung: "Datumsformatstruktur endet vor Umwandlung der gesamten Eingabezeichenfolge".

Ich denke da muss es noch einen anderen Befehl anstatt TO_DATE geben, um das komplette Datum mit Uhrzeit umzuwandeln ?

Lösung übernommen aus nahpets link:

Delphi-Quellcode:
TO_DATE(SUBSTR(VAM.DEF14,7,2) || '.' || SUBSTR(VAM.DEF14,5,2) || '.' || SUBSTR(VAM.DEF14,1,4) || ' ' || SUBSTR(VAM.DEF14,9,2) || ':' || SUBSTR(VAM.DEF14,11,2) || ':' || SUBSTR(VAM.DEF14,13,2),'dd.mm.yyyy,HH24:MI:SS') AS DATUM
Gruss

Holger

nahpets 20. Feb 2009 11:46

Re: SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenfü
 
Hallo,

TO_Date erwartet einen String, d. h.: Du musst Dein Ergebnis noch in ' packen.

Hoffe, dass ich das jetzt hier richtig hinschreibe:
SQL-Code:
TO_DATE(''''||SUBSTR(VAM.DEF14,7,2) || '.' || SUBSTR(VAM.DEF14,5,2) || '.' || SUBSTR(VAM.DEF14,1,4) || ' ' || SUBSTR(VAM.DEF14,9,2) || ':' || SUBSTR(VAM.DEF14,11,2) || ':' || SUBSTR(VAM.DEF14,13,2)||'''','dd.mm.yyyy,HH24:MI:SS') AS DATUM


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz