Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#9

AW: SQLite SQL für Alter anzeigen gibt Null zurück

  Alt 25. Nov 2022, 16:06
SQL-Code:
SELECT
  name,
  GebDate,
  strftime('%Y', date('now')),
  strftime('%m', date('now')),
  strftime('%d', date('now')),
  CASE
    WHEN strftime('%m', date('now')) > strftime('%m', date(GebDate)) THEN
      strftime('%Y', date('now')) - strftime('%Y', date(GebDate))
    WHEN strftime('%m', date('now')) = strftime('%m', date(GebDate)) THEN
      CASE
        WHEN strftime('%d', date('now')) >= strftime('%d', date(GebDate)) THEN
          strftime('%Y', date('now')) - strftime('%Y', date(GebDate))
        ELSE
          strftime('%Y', date('now')) - strftime('%Y', date(GebDate)) - 1
      END
    WHEN strftime('%m', date('now')) < strftime('%m', date(GebDate)) THEN
      strftime('%Y', date('now')) - strftime('%Y', date(GebDate)) - 1
    ELSE ... -- dieses ELSE gibt es nicht, also NULL <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  END AS Age
FROM test;
Wozu überhaupt das innere CASE?
Weil Code zu unübersichtlich und nicht bemerkt?


außerdem ist es unnötig unübersichtlich, da Vieles doppelt/mehrfach vorkommt.
SQL-Code:
SELECT
  name,
  GebDate,
  strftime('%Y', date('now')),
  strftime('%m', date('now')),
  strftime('%d', date('now')),
  strftime('%Y', date('now')) - strftime('%Y', date(GebDate))
  - CASE
      WHEN strftime('%m', date('now')) > strftime('%m', date(GebDate)) THEN
        0
      WHEN strftime('%m', date('now')) = strftime('%m', date(GebDate)) THEN
        CASE
          WHEN strftime('%d', date('now')) >= strftime('%d', date(GebDate)) THEN
            0
          ELSE
            -1
        END
      WHEN strftime('%m', date('now')) < strftime('%m', date(GebDate)) THEN
        -1
      ELSE
        0 -- neues/fehlendes ELSE --> irgendwas - NULL = NULL
    END AS Age
FROM test;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (25. Nov 2022 um 16:12 Uhr)
  Mit Zitat antworten Zitat