AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenführen ?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL -> Spalten zu einer Datums/Zeit-Spalte zusammenführen ?

Ein Thema von HolgerCW · begonnen am 20. Feb 2009 · letzter Beitrag vom 20. Feb 2009
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

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

  Alt 20. Feb 2009, 12:01
Datenbank: ORACLE • Version: 10 • Zugriff über: BDE
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:

(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
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

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

  Alt 20. Feb 2009, 12:04
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
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

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

  Alt 20. Feb 2009, 12:07
In ORACLE nutze ich normalerweise TO_DATE, aber das geht bei dem vorliegenden FORMAT nicht.
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#4

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

  Alt 20. Feb 2009, 12:11
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

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

  Alt 20. Feb 2009, 12:16
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.
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#6

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

  Alt 20. Feb 2009, 12:34
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:

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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

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

  Alt 20. Feb 2009, 12:46
Hallo,

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

Hoffe, dass ich das jetzt hier richtig hinschreibe:
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 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