PDA

View Full Version : Typ DATE in SQL-Tabelle



Melanie
12-02-03, 14:31
Hallo, wir haben einige Felder in einer SQL-Tabelle als Typ DATE definiert. Wenn aber kein Wert in dem Feld steht, wird es automatisch mit 0001-01-01 gefüllt. Kann man das nicht verhindern? Wieso ist nicht 0 möglich?

rmittag
12-02-03, 15:29
Der definierte *LOWVAL für den Typ DATE ist '0001-01-01' ( ISO - Norm ). Einzige Alternative ist das Null-Attribut.

( CREATE TABLE ... (..., x1 DATE, ... ) dann hat x1 das Null-Attribut solange kein Wert eingegeben wurde, bzw. das Feld mit NULL upgedatet wurde.

Gruß
Rolf

Melanie
13-02-03, 07:25
Funktioniert bei mir natürlich wieder nicht. Habe über strsql folgendes eingegeben:
create table tstdta/test (datum date)
Habe aber wieder 0001-01-01. Gruß Melanie

Fuerchau
13-02-03, 08:44
Wann kommt das Datum "0001-01-01" denn ?
Wenn du mit UPDDTA versuchst Daten einzugeben, dann schlägt DFU automatisch diesen Wert vor.
Beim Select in einem Programm must du eine Indicator-Variable verwenden. Der Wert NULL ist im Feld selbst nicht darstellbar, sondern wieder *LOVAL:

select date, f2 from file into :mydate :dateflag, :myf2

if dateflag = -1
... NULL vorhanden
endif

In RPGLE kannst du die interne Funktion %NULLIND(mydate) verwenden um den NULL-Inhalt abzufragen bzw. zu setzen.
Beim READ wird das Feld halt immer mit *LOVAL gefüllt.

Melanie
13-02-03, 09:55
Dann muss ich mit 0001-01-01 wohl leben. Danke für die Hilfe!

rmittag
13-02-03, 10:30
Wenn es nur um die Darstellung geht :


select coalesce(DatumFeld, 0)

bringt das Datum, wenn DatumFeld <> NULL sonst 0

Gruß
Rolf