Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi default Datum 0000-00-00 übernehmen (https://www.delphipraxis.net/44681-default-datum-0000-00-00-uebernehmen.html)

Gambit 22. Apr 2005 17:47

Datenbank: MySQL • Version: 4 • Zugriff über: Zeos

default Datum 0000-00-00 übernehmen
 
Hallo,
ich habe eine DB mit einer Datumsspalte. In dieser Spalte ist der Defaultwert mit 0000-00-00 angegeben
Nun möchte ich per insert-Anweisung Datumswerte in eine neue Tabelle übernehmen. Das klappt auch soweit nur wenn ein Defaultwert übernommen werden soll, macht er aus 0000-00-00 den Wert 1899-12-30
Ist das normal bezw. kann man den Wert nicht so übernehmen?

Für Hansa: Die Urspungstabelle ist nicht von mir und den Defaultwert kann ich nicht ändern.

Gruß

Gambit

Gambit 22. Apr 2005 20:21

Re: default Datum 0000-00-00 übernehmen
 
wenn ich in die Tabelle, in der als Defaultwert 0000-00-00 für das Datum steht wie folgt reinschreibe

Delphi-Quellcode:
ZQuery1.SQL.Text:='INSERT INTO table () VALUES ()';
ZQuery1.ExecSQL;
wird auch 0000-00-00 reingeschrieben.

wenn ich

Delphi-Quellcode:
ZQuery1.append;
ZQuery1.post;
schreibe, wird ein neuer Satz angelegt und im Datumsfeld steht dann 1899-12-30 also nicht der Defaultwert, obwohl ich in das Feld gar nichts reinschreibe...versteh ich nicht...

Binärbaum 22. Apr 2005 20:39

Re: default Datum 0000-00-00 übernehmen
 
Zitat:

Zitat von Gambit
.. macht er aus 0000-00-00 den Wert 1899-12-30
Ist das normal bezw. kann man den Wert nicht so übernehmen?

Ja, das liegt daran, dass bei TDateTime der Wert 0 dem 30.12.1899 entspricht.
Und nochwas: was soll das den für ein Tag sein (Tag 0, Monat 0, Jahr 0), den gab es doch nie.

MfG
Binärbaum

Gambit 22. Apr 2005 20:44

Re: default Datum 0000-00-00 übernehmen
 
klar, ne das soll gar kein Tag sein. Das ist nur ein Defaultwert wenn es kein Datum gibt, is halt so.

Aber wieso schreibt er bei einer Insert-Anweisung den (komischen) Defaultwert rein und bei der .append-Anweisung nicht?

Binärbaum 22. Apr 2005 21:01

Re: default Datum 0000-00-00 übernehmen
 
Zitat:

Zitat von Gambit
Aber wieso schreibt er bei einer Insert-Anweisung den (komischen) Defaultwert rein und bei der .append-Anweisung nicht?

Keine Ahnung :oops: , aber versuch mal, ein Datum als Default-Wert zu nehmen, dass es auch gibt, z.b. 01.01.0001

MfG
Binärbaum

jfheins 22. Apr 2005 21:03

Re: default Datum 0000-00-00 übernehmen
 
Zitat:

Zitat von Gambit
Die Urspungstabelle ist nicht von mir und den Defaultwert kann ich nicht ändern.

Gruß

Gambit


Gambit 22. Apr 2005 21:04

Re: default Datum 0000-00-00 übernehmen
 
ne, das kann ich leider nicht...in der neuen Tabelle sollen als Defaultwerte die gleichen stehen wie in der Ursprungstabelle.

DGL-luke 22. Apr 2005 22:02

Re: default Datum 0000-00-00 übernehmen
 
1. das linux timestamp 0000000 entspricht dem 30.12.1899(sprich: linux timestamp = anzahl der vegangenen sekunden seit dem 30.12.1899 23:59:59).
2. wenn du also den 00.00.0000 eingibst, ist das timestamp wohl negativ - vielleicht kannst du das überprüfen.
3. vielleicht hilft dir das schon.
4. wenn ich mich irren sollte, dann berichtigt mich.

Union 22. Apr 2005 22:03

Re: default Datum 0000-00-00 übernehmen
 
SQL-Code:
ZQuery1.SQL.Text:='INSERT INTO table () VALUES ()';
ZQuery1.ExecSQL;
und wie wäre es wenn Du es stattdessen so machst:
SQL-Code:
ZQuery1.SQL.Text:='INSERT INTO table (Datum) VALUES (NULL)';
ZQuery1.ExecSQL;

Gambit 22. Apr 2005 22:23

Re: default Datum 0000-00-00 übernehmen
 
null geht nicht, ich muss 0000-00-00 haben
dann muss ich wohl die Insert Anweisung zusammenbasteln
Lieber wärs mir gewesen, wenn ich ohne Insert-Anweisung ausgekommen wäre, also mit .append und .post...

schöni 22. Apr 2005 22:55

Re: default Datum 0000-00-00 übernehmen
 
Kann ja sein, das der Kunde als Defaultwert 0000-00-00 haben will. Aber warum? Kannst Du den nicht überzeugen, das aktuelle Tagesdatum als Defaultwert zu nehmen. Wäre zumindest nach meinem Verständnis für ne Datenbank sinnvoll. Ein leerer Datensatz würde dann defaultmäßig mit dem aktuellen Tagesdatum belegt. Und wenn das halt für die aktuellen Daten nicht paßt, kommt das korrekte Datum (Rückgabe bis, Konzerttermin am oder was weiß ich...) dort rein.

schöni

Gambit 22. Apr 2005 23:05

Re: default Datum 0000-00-00 übernehmen
 
ne, da gehts um Berechnungen, alle Daten seit blah. Wenn kein Datum da ist, soll auch kein Datensatz geliefert werden in dem Fall.

ich denke ich könnte ihn überzeugen 01.01.1900 zu nehmen. Wär vielleicht am einfachsten...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 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