Libre Office

DATEDIFF, wenn ein Datum fehlt

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Freischreiber
* LO-Experte *
Beiträge: 867
Registriert: Fr 28. Mär 2014, 10:41

DATEDIFF, wenn ein Datum fehlt

Beitrag von Freischreiber » Fr 16. Jan 2015, 18:17

Hallo,

ich versuche, eine Abfrage zu erstellen, die alle Rechnungen liefert mit Rechnungsdatum eine Woche zurückliegend oder älter:

Code: Alles auswählen

SELECT "Rechnungsnr", "AuftragID", "Betrag", "Datum", "Offen", DATEDIFF( 'dd', "t-rechnungen"."Datum", CURRENT_DATE ) AS "Tage" FROM "t-rechnungen" WHERE "t-rechnungen"."Offen" = TRUE AND DATEDIFF( 'dd', NULLIF ( "t-rechnungen"."Datum", '0' ), CURRENT_DATE ) >= 7 ORDER BY "Datum"
Das "NULLIF" ist der Versuch, auch dann Treffer (wenn auch mit unsinnigen Tage-Angaben) zu bekommen, wenn das Feld mit dem Rechnungsdatum leer ist, was bei allen alten Rechnungen der Fall ist (wurde vor Base nicht erfaßt).

Es kommt aber eine Fehlermeldung: data exception: invalid datetime format

Habe es auch mit '01.01.1800' statt '0' probiert, geht aber auch nicht...

Gruß
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

Freischreiber
* LO-Experte *
Beiträge: 867
Registriert: Fr 28. Mär 2014, 10:41

Re: DATEDIFF, wenn ein Datum fehlt

Beitrag von Freischreiber » Fr 16. Jan 2015, 18:27

Äh...

IFNULL statt NULLIF, er soll ja rechnen können, auch wenn das Datumsfeld NULL hat, nicht wahr :D

Code: Alles auswählen

 ... AND DATEDIFF( 'dd', IFNULL( "t-rechnungen"."Datum", '1980-01-01' ), CURRENT_DATE ) >= 7 ... 
Aber er liefert keine Tage in diesen Fällen... auch nicht zuviele, z. B. bis 1980 zurück, rechnen kann man damit nicht...

Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

RobertG
* LO-Experte *
Beiträge: 2965
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: DATEDIFF, wenn ein Datum fehlt

Beitrag von RobertG » Fr 16. Jan 2015, 19:24

Hallo freischreiber,

ich habe gerade einmal den zweiten Teil ausprobiert:

Code: Alles auswählen

DATEDIFF( 'dd', IFNULL( "Datum", '1980-01-01' ), CURRENT_DATE )
ergibt bei mir am 16.1.2015 12799. Hat also das gewünschte Ergebnis.
Da muss irgendetwas anderes faul sein.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 867
Registriert: Fr 28. Mär 2014, 10:41

Re: DATEDIFF, wenn ein Datum fehlt

Beitrag von Freischreiber » Sa 17. Jan 2015, 08:47

Hallo Robert,

( habe gerade überlegt, ob meine leeren Datumsfelder vielleicht gar nicht NULL sind, und das IFNULL daher gar nicht greift... vielleicht sind sie nur "leer". Aber wie sehe ich das?

Ich habe per SQL versucht, die leeren Strings auf Null zu setzen, das scheint aber so nicht zu gehen:

Code: Alles auswählen

UPDATE "t-rechnungen" SET "Datum" = NULL where "Datum" IS ''
)

Ergänzung: Es kommt dann die Fehlermeldung : 1: data exception: invalid datetime format


Ergänzung 2:
- Die leeren Felder sind NULL, werden in einer Abfrage, ob NULL, als Treffer geliefert. Das IFNULL müßte also greifen.
- Es ist eine externe HSQL-DB 2.3.2.

Gruß
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

Open Office
Antworten