![]() |
Datenbank: mdb • Zugriff über: ADO
DateTime Format speichern
Hallöchen,
mal eine grundsätzliche Frage. Welche Datetime format eignet sich am besten es in einer DB abzuspeichern? Und zwar um später einen integeren Vergleichswert zur Hand zu haben mit dem man arbeiten kann. ZB frühestes Datum, letztes Datum usw. Grüße |
Re: DateTime Format speichern
Hi,
ich selbst benutze der Einfachheit halber einen Integer-Wert. Damit lässt sich am besten Arbeiten. Gruß Patrick |
Re: DateTime Format speichern
TDateTime ist ein Double-Typ
|
Re: DateTime Format speichern
Hi,
ich ging davon aus, dass der Fragesteller "Datum" im Sinne von ![]() Gruß, Patrick //Edit <Klugscheiss> ein Datums-Zeit-Wert im Unix Format ist natürlich ein Integer ;-) </Klugscheiss> |
Re: DateTime Format speichern
Access wird natürlich das Format der Konkurrenz verwenden :mrgreen:
|
Re: DateTime Format speichern
Alle mir bekannten Datenbanken stellen DateTime als eigenen Datentyp zur Verfügung.
Da muss man in der Regel nicht drüber nachdenken. Sherlock |
Re: DateTime Format speichern
Zitat:
Gruß Patrick |
Re: DateTime Format speichern
Das ist ja nicht die Frage gewesen glaub ich...oder möchte der OP zwischen verschiedenen DBs vergleichen? Wobei selbst dann eigentlich kein Problem bestehen sollte, wenn er die verschiedenen DateTimes erst nach Delphi holt und dort erst vergleicht.
Edit: Im übrigen ist ein Integer als DateTime nicht Jahr 2038 fest. ;) ![]() Sherlock |
Re: DateTime Format speichern
MS Access speichert ein DateTime Wert intern genau in der gleichen Weise, wie Delphi auch:
Anzahl der Tage seit 31.12.1899 als 64 Bit Fliesskommazahl. Dies ist ebenfalls identisch mit dem Datums/Zeit-Format, dass MS für COM/DCOM/ActiveX definiert hat und dass Borland dann übernommen hat. Daher ist Access wirklich sehr unproblematisch in Bezug auf Datums/Zeit-Werte. Man kann das Datum sogar als Flieskommazahl ansprechen:
Delphi-Quellcode:
Query.SQL.Text := 'UPDATE Tabelle SET Datumsfeld='+FloatToStr(Now());
Query.Execute; |
Re: DateTime Format speichern
Am wenigsten Probleme hat man aber durch Parametrisierung der Abfragen.
|
Re: DateTime Format speichern
Vielen Dank Leute,
huch so eine Diskussion.... hatte ich nun nicht erwartet Das Problem wie ich darauf gestoßen bin war mit min(datum) eine SQl-abfrage zu starten. Jedoch brichte der compiler mit einer Jet-Fehlermeldung ab. Ziel war es das älteste Datum in einen Datetimepicker zu setzen. Gespeichert habe ich bisher mit DateTimeToStr was ja auch klappte. Geht das nun nicht mit MIN(*) das älteste herauszufinden? |
Re: DateTime Format speichern
Und mit welchem Typ in der Datenbank?
|
Re: DateTime Format speichern
Jet...das hört sich nach Access an.
Schau doch mal was für Datentypen Deine DB zur Verfügung stellt und nutz die dann. Ein Datum als String ist nicht wirklich optimal. Sherlock |
Re: DateTime Format speichern
Zitat:
|
Re: DateTime Format speichern
Siehe Eröffnungsthema: MDB
ja mit Access. Der Feldtyp ist Datum/Zeit. so soll die abfrage aussehen:
Delphi-Quellcode:
timequer.Close;
timequer.SQL.Text:='SELECT MAX(dastring) as mindat'; timequer.SQL.Add(' FROM dauerspeicher'); timequer.Open; timevon.MinDate:=StrToDateTime(timequer.fieldbyname('mindat').AsString); |
Re: DateTime Format speichern
Zitat:
|
Re: DateTime Format speichern
@grenzgaenger:
du hast nicht zuende gelesen :mrgreen: ich denke das mit dem StrToDateTime bezieht sich nur auf den Sql an sich, denn: Zitat:
Also: Normalerweise sollte das so gehen, was mir auffällt ist, dass du MAX(dastring) ausließt, aber in MinDate schreibst. Nicht, dass dein Fauxpas da liegt :) |
Re: DateTime Format speichern
Zitat:
aber an der funktion sollte sich ja nichts ändern. In der entsprechenden Zelle der Tabelle liegt auch ganz normal der Inhalt: 08.05.2008 12:58:47. Oder ist beim speichern die Umwandlung DateTimeToStr nicht erforderlich wenn der Typ ohnehin Datum/Zeit ist? |
Re: DateTime Format speichern
Komt darauf an, ob du eine Abfragestring erzeugt oder mit Parametern arbeitest.
|
Re: DateTime Format speichern
leider versteh ich die Frage nicht,
ich hab doch oben den quell gepostet... oder meinst du was anderes? |
Re: DateTime Format speichern
War keine Frage sondern ein Antwort:
Bei
Delphi-Quellcode:
muss es natürlich sein, aber bei
Query.SQL.Text := 'UPDATE Tabelle SET Datumsfeld='+FloatToStr(Picker.Date);
Delphi-Quellcode:
nicht.
Query.SQL.Text := 'UPDATE Tabelle SET Datumsfeld=:datum';
Query.SQL.ParamByName('datum').Value := Picker.Date; |
Re: DateTime Format speichern
soweit so gut,
aber warum geht mein Beispiel nicht?
Delphi-Quellcode:
timequer.Close;
timequer.SQL.Text:='SELECT MAX(dastring) as mindat'; timequer.SQL.Add(' FROM dauerspeicher'); timequer.Open; timevon.MinDate:=StrToDateTime(timequer.fieldbyname('mindat').AsString); |
Re: DateTime Format speichern
Zitat:
Sherlock |
Re: DateTime Format speichern
mit dem min und max hat glaub ich nichts zu tun
dastring ist das Feld vom typ Datum/Zeit und mindat einfach nur ne variable |
Re: DateTime Format speichern
hmm,
sag doch nochmal bitte, was ganz genau das Problem ist. Gibt er einen falschen Wert zurück?`wenn ja, welchen wert gibt er zurück und was sollte er deiner meinung nach zurückgeben. Bekommst du eine Fehlermeldung? Wenn ja, bitte die genaue Fehlermeldung hier posten oder als screenshot rein Gruß angos |
Re: DateTime Format speichern
Liste der Anhänge anzeigen (Anzahl: 1)
anbei die Fehlermeldung,
an der Zuweisung an den DateTimePicker (timevon.MinDate) kann es nicht liegen.#Ich geh davon aus das die SQL-anweisung fehler erzeugt. Aber warum? |
Re: DateTime Format speichern
Stelle erst mal sicher, dass du eine funktionierende MDAC und Jet-Engine Installation auf deinem Rechner hast.
Das bedeutet: MDAC Version 2.8 und Jet-Engine Servicepack 8 (SP7 geht auch) installieren. ![]() ![]() |
Re: DateTime Format speichern
Danke shmia
es sind soviele andere zugriffe in dem Projekt, alle funktionieren. Es kann unmöglich daran liegen. |
Re: DateTime Format speichern
Zitat:
Diese Wort ist in Zusammenhang mit Fehlersuche in Software verboten. :zwinker: Die Zugriffsverletzung tritt innerhalb der DLL "msjet40.dll" auf und die gehört zur Jet-Engine. Deine SQL-Abfrage sieht soweit OK aus. Systematisches Ausschliesen von Fehlerquellen ist jetzt angesagt! Wenn du auf einem Hausdach stehst und die Balken passen nicht zusammen, dann sollte man zuerst mal schauen, ob die Wände überhaupt gerade sind. |
Re: DateTime Format speichern
ja sicher hast du recht,
aber ich schliesse es so gut wie aus da alle anderen querys,datasets und source funktionieren. warum ausgerechnet das eine nicht? Ich hab es zumindest genau untersucht ob ein falsche Parameter im OI vorliegen. Auch ob reservierte Wörter vorliegen...nichts. Auch habe ich statt der o.g. Abfrage eine innocente Standardabfrage gestartet (select * from dauerspreicher) funkioniert tadellos. Nur mit Aggregat -> Pustekuchen. |
Re: DateTime Format speichern
Du hast selbstverständlich diese Abfrage auch direkt in Access mal ausprobiert und keinen Fehler bekommen, richtig?
Sherlock |
Re: DateTime Format speichern
Mal so gesprochen,
ich habe keine Ahnung wie ich in Access eine SQL-Abfrage generiere :oops: |
Re: DateTime Format speichern
Zitat:
der aber funktioniert. |
Re: DateTime Format speichern
Liste der Anhänge anzeigen (Anzahl: 1)
Schau mal ins Bildchen...das müsste helfen um die Abfragen zu finden. Auch in einem neueren Access hat sich nicht sooo viel geändert.
Sherlock |
Re: DateTime Format speichern
Zitat:
Wenn eine Software (hier: Jet-Engine) doch einen Bug hat, dann wird sich dieser Bug doch nur unter ganz bestimmten Unständen zeigen. Ich habe bei älteren Versionen der Jet-Engine 4 schon den Fall gehabt, dass eine gültige Abfrage nicht funktioniert. Wenn man dann die Reihenfolge der Joins umstellt, dann gab es keinen Fehler mehr. Es ist auch ein Unterschied, ob die Abfrage aus MS Access oder über ADO auf die Jet-Engine losgelassen wird. Solange du nicht sicher weisst, ob auf deinem Rechner die Jet-Engine SP 8 und MDAC 2.8 SP1 installiert ist, weisst du auch nicht wie "verbugt" deine Jet-Engine ist. Ich kann dir nur aus langjähriger Erfahrung mit der Jet-Engine sagen, dass ältere Versionen der Jet-Engine deutlich mehr Bugs (> 30 Stück) haben als obige Kombination. |
Re: DateTime Format speichern
Gut, von solchen BUgs gehe ich nicht aus
*schon wieder ein Fehler* ich hab jetzt mehrere Tests gemacht und festgestellt dass außer dieser einen Abfrage alle funktionieren. Ziemlich merkwürdig, aber gut ich update erstmal. Vielen Dank an alle und ein schönes Wochenende |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz