AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird/Interbase: Probleme mit Datum
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird/Interbase: Probleme mit Datum

Ein Thema von Ralf Stehle · begonnen am 12. Okt 2004 · letzter Beitrag vom 14. Okt 2004
Antwort Antwort
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#1

Firebird/Interbase: Probleme mit Datum

  Alt 12. Okt 2004, 19:31
Ich möchte meine Datenbank von MS-Access auf Firebird/Interbase umstellen.

Bei Abfrage der Daten kann ich das Datumsproblem aber nicht lösen:

Mit MS-Access (AdoConnection) hatte folgende Select-Anweisung funktioniert:

Select * from UDat Where (Year(Untersuchungsdatum) = ' + FormatDateTime('yyyy', Now) + AND Day(Untersuchungsdatum) = ' + FormatDateTime('dd', Now) + AND Month(Untersuchungsdatum) = ' + FormatDateTime('mm', Now) + ') Für den SQL-Server habe ich folgendes erfolglos probiert (Datum ist ein Datum in deutscher Schreibweise z.B. 19.01.2003):

Delphi-Quellcode:
IBQuery1.SQL.Add('Select * from UDat Where Datum = ' + now + ');

DateSeparator :=
'/';
IBQuery1.SQL.Add(
'Select * from UDat Where Format(Datum,"\#mm\/dd\/yyyy\#") = CURRENT_TIMESTAMP');

IBQuery1.SQL.Add(
'Select * from UDat Where Format(Datum,"\#mm\/dd\/yyyy\#") = SYSDATE');

IBQuery1.SQL.Add(
'Select * from UDat Where Format(Datum,"\dd\/mm\/yyyy\") = ' + FormatDateTime('dd/mm/yyyy',now) + ');

IBQuery1.SQL.Add('Select * from UDat Where Format(Untersuchungsdatum,"\#mm\/dd\/yyyy\#") = ' + FormatDateTime('dd.mm.yyyy', Now) + '');
Wenn jemand eine Lösung hat, wäre ich nach stundenlanger Internetrecherche sehr glücklich

Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Firebird/Interbase: Probleme mit Datum

  Alt 12. Okt 2004, 19:34
was ist Untersuchungsdatum für ein Typ ?
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Firebird/Interbase: Probleme mit Datum

  Alt 12. Okt 2004, 19:36
wenn Untersuchungsdatum ein Timestamp ist :
WHERE CAST(Untersuchungsdatum AS DATE) = CURRENT_DATE wenn Untersuchungsdatum ein Datum ist :
WHERE Untersuchungsdatum = CURRENT_DATE
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Firebird/Interbase: Probleme mit Datum

  Alt 12. Okt 2004, 19:41
Geht es jetzt um die Umstellung des Programmes, oder der Daten ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#5

Re: Firebird/Interbase: Probleme mit Datum

  Alt 12. Okt 2004, 20:03
Habe eure Vorschläge gerade probiert

Delphi-Quellcode:
Select * from UDat WHERE CAST(Untersuchungsdatum AS DATE) = CURRENT_DATE

Select * from UDat WHERE Untersuchungsdatum = CURRENT_DATE
Beide Lösungsvorschläge ergeben die gleiche Fehlermeldung:
"12.10.2004 ist kein gültiger Datums- und Zeitwert"

Untersuchungsdatum war in der MS-Access-Datenbank ein Datums/Zeitfeld und in Firebird Timestamp
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Firebird/Interbase: Probleme mit Datum

  Alt 13. Okt 2004, 07:20
Guten Morgen Ralf,

im Schnelltest (Delphi 7 mit IBX 7.05 auf Firebird 1.5.1) ergab dass diese SQL Abfrage in einem TIBDataSet ohne Probleme funktioniert:

Select * from Personal_log where CAST(Datum AS DATE)=Current_Date-100 Das mit dem (Current_Date-100) habe ich gebraucht, damit die SQL auch ein Ergebnis hat (bei mir!).

Es wäre jetzt sicherlich hilfreich zu wissen mit was Du arbeitest: Version der DB, Version von DElphi, Version der IBX, stimmt die Version der Client-Bibliothek mit dem Server überein?

Zudem solltest Du, wie schon so oft geschrieben, die TIBTable und TIBQuery aus deinem Programm werfen, da diese nur aus Kompatibilitätsgründen vorhanden sind! Verwende entweder TIBDataset oder TIBSQL!

Grüße
Lemmy
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Firebird/Interbase: Probleme mit Datum

  Alt 13. Okt 2004, 07:59
Zitat von Ralf Stehle:
Habe eure Vorschläge gerade probiert

Delphi-Quellcode:
Select * from UDat WHERE CAST(Untersuchungsdatum AS DATE) = CURRENT_DATE

Select * from UDat WHERE Untersuchungsdatum = CURRENT_DATE
Beide Lösungsvorschläge ergeben die gleiche Fehlermeldung:
"12.10.2004 ist kein gültiger Datums- und Zeitwert"

Untersuchungsdatum war in der MS-Access-Datenbank ein Datums/Zeitfeld und in Firebird Timestamp
Welche Firebird Version hast du ?
Wo probierst du den SQL-Select aus ? zum testen mal in der IBConsole oder ähnlichen.
Bei Firebird v1.5 Funktioniert das mit Timestamp definitiv !
  Mit Zitat antworten Zitat
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#8

Re: Firebird/Interbase: Probleme mit Datum

  Alt 13. Okt 2004, 09:23
Vielen Dank für Eure Hilfe. Ich verwende Delphi 6.0 und Firebird 1.5. Da ich jetzt weiß, wie es eigentlich funktionieren müsste, werde ich mir meine Daten in der Datenbank genauer anschauen.

Da die Select-Abfrage selbst korrekt ist, könnte es auch am Format des Datums in der Datenbank liegen? Alle Einträge wurden bisher mit MS-Access gemacht und daher im Format dd.mm.yyyy hh:mm:ss, in einer SQL-Datenbank ist das Format ja wahrscheinlich MM/DD/YYYY .... oder sogar YYYY-MM-DD HH:MM:SS ?

Vielleicht kann ich das Formatproblem auch einfach umgehen, indem ich die Datumeinträge aus MS-Access in ein CHAR-Feld anstatt Timestamp kopiere.

Wie Ihr bei meiner ersten Anfrage seht, habe ich versucht, mit der Format-Funktion das Datumsformat der Abfrage in MM/DD/YYYY umzuwandeln, das hat aber nicht geklappt. Möglicherweise war meine Formatabfrage syntaktisch falsch, da immer die Fehlermeldung kommt "Funktion unbekannt"


Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#9

Re: Firebird/Interbase: Probleme mit Datum

  Alt 13. Okt 2004, 14:44
waere noch interessant zu wissen welches Character set du bei der Datenbank eingestellt hast!

Generell solte man wegen Umlauten und Datumsformaten (deutsch)
ISO8859_1 benutzen
  Mit Zitat antworten Zitat
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#10

Re: Firebird/Interbase: Probleme mit Datum

  Alt 14. Okt 2004, 06:32
Ich habe die Lösung endlich gefunden. Durch eure Hilfe wusste ich wie ich die Select-Abfrage korrekt formulieren muß. Da es danach immer noch nicht funktioniert hatte, habe ich das Datumsformat genauer beachtet:

Beim Kopieren der Daten aus der MS-Access-Datenbank in die Firebird-Datenbank habe ich ausdrücklich mit der Formatanweisung

IBDataSet1.FieldByName('Untersuchungsdatum').Value := FormatDateTime('yyyy-mm-dd', ADODataSet1.FieldByName('Untersuchungsdatum').AsDateTime); das Datumsformat YYYY-MM-DD erzwungen

Danach hatte die Abfrage

'Select * from UDat WHERE CAST(Untersuchungsdatum AS DATE) = CURRENT_DATE' den gewünschten Erfolg

Ralf Stehle
ralfstehle@yahoo.de
  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 07:10 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