Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datum 0 abfragen (https://www.delphipraxis.net/153125-datum-0-abfragen.html)

khh 22. Jul 2010 08:08

Datenbank: firebird • Version: 2.1 • Zugriff über: zeos

Datum 0 abfragen
 
Hallo zusammen,
kann ich im sql-string ein date-feld auf datum 0 abfragen.
in dem entsprechenden feld steht ja '30.12.1899'.
Oder muss ich expizit nach diesem 30.12.1899-datum abfragen?

Danke gruss KHH

himitsu 22. Jul 2010 08:14

AW: Datum 0 abfragen
 
30.12.1899 = 0 (wenn man es als Integer "Tage seit ..." interpretiert, siehe Delphi-Referenz durchsuchenTDateTime) ... es kommt drauf an, ob/wie du auf das Datumsfeld zugreifen kannst

aber warum nicht besser NULL verwenden?

khh 22. Jul 2010 08:20

AW: Datum 0 abfragen
 
Zitat:

Zitat von himitsu (Beitrag 1036750)
30.12.1899 = 0 (wenn man es als Integer "Tage seit ..." interpretiert, siehe Delphi-Referenz durchsuchenTDateTime) ... es kommt drauf an, ob/wie du auf das Datumsfeld zugreifen kannst

aber warum nicht besser NULL verwenden?

Das Feld wird vorher aus einer anderen Routine mit Datum 0 bestückt.
Deshalb steht nicht mehr NULL, sondern eben das Datum 30.12.1899 im Feld.

Sherlock 22. Jul 2010 08:52

AW: Datum 0 abfragen
 
Dann ist die Routine falsch implementiert, es sei denn es ist absolut sicher, daß das Datum 30.12.1899 nie nie nie niemals nicht vorkommen darf. Kurz: Ein leeres Datum muss NULL sein, nicht 0. ;)

Sherlock

DeddyH 22. Jul 2010 09:03

AW: Datum 0 abfragen
 
Das sehe ich auch so. Aber so wie es momentan ist könnte man doch einfach auf < 01.01.1900 abfragen, das sollte eigentlich auch mit Rundungsungenauigkeiten klarkommen. Schön ist trotzdem was anderes ;)

khh 22. Jul 2010 10:20

AW: Datum 0 abfragen
 
Zitat:

Zitat von DeddyH (Beitrag 1036770)
Das sehe ich auch so. Aber so wie es momentan ist könnte man doch einfach auf < 01.01.1900 abfragen, das sollte eigentlich auch mit Rundungsungenauigkeiten klarkommen. Schön ist trotzdem was anderes ;)



Ihr habt ja Recht, ich werds dahingehend ändern dass NULL drin steht ;-)

idefix2 22. Jul 2010 13:26

AW: Datum 0 abfragen
 
Null ist aber ein ziemlich lästiger "Wert" - Ich vermeide Nulls, wo es geht.
Eine der besonderen Heimtücken: Man kann in einer Query den Wert Null zwar als Parameter an SQL übergeben, eine Where-Klausel, in der ein solcher Parameter NULL ist, funktioniert aber dann nicht mehr. Die Bedingung wird immer zu NULL ausgewertet und dann als false interpretiert, die Negation der Bedingung ebenso.

mkinzler 22. Jul 2010 13:39

AW: Datum 0 abfragen
 
Null ist ein besonderer Wert und macht auch Sinn. Er bedeutet, dass das Feld nicht gesetzt ist.

stahli 22. Jul 2010 16:05

AW: Datum 0 abfragen
 
Es wird etwas OT, aber es ist doch schon richtig, dass NULL in Where-Klauseln nerven.
Es wäre m.E. sinnvoll wenn die SQL-Datenbanken NULL-Felder in Where-Klauseln standardmäig als "0" oder "" behandeln würden. Das würde SQL-Abfragen sicher häufig vereinfachen.

select * from table where field = 0

würde dann reichen statt

SQL-Code:
select * from table where (field = 0) or (field is null)

khh 22. Jul 2010 16:10

AW: Datum 0 abfragen
 
Zitat:

Zitat von idefix2 (Beitrag 1036845)
Null ist aber ein ziemlich lästiger "Wert" - Ich vermeide Nulls, wo es geht.
Eine der besonderen Heimtücken: Man kann in einer Query den Wert Null zwar als Parameter an SQL übergeben, eine Where-Klausel, in der ein solcher Parameter NULL ist, funktioniert aber dann nicht mehr. Die Bedingung wird immer zu NULL ausgewertet und dann als false interpretiert, die Negation der Bedingung ebenso.

ja das ist das Lästige daran , null zu verarbeiten geht immer über Umwege


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