Fehlermeldung bei Block Your_Account/blocks/block-Birthday-next.php

Begonnen von Sven4972, 13 Februar 2026, 09:21:58

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Sven4972

Hallo,

ich möchte den Block auf der HP einbinden und erhalte folgende Fehlermeldung:

mysql error (1525):
Incorrect DATE value: '0000-00-00'
query:
SELECT
uname,
user_bday,
(YEAR(CURRENT_DATE) - YEAR(user_bday)) - (RIGHT(CURRENT_DATE, 5) < RIGHT(user_bday, 5)) AS user_age,
DATEDIFF(DATE(DATE_FORMAT(user_bday, CONCAT(IF((RIGHT(CURRENT_DATE, 5)
in modules/Your_Account/blocks/block-Birthday-next.php on line 58

Meine PragmaMX Version ist die 2.9.5.1171 mit PHP 8.4.15 und MySQL 8.0.44.

In der besagten Tabelle ist kein Eintrag mit 0000-00-00 in der Spalte user_bday.

Wo könnte da der Fehler liegen?


VG Sven

Olaf / TerraProject

ich vermute, daß es an dem MySQL8 liegt, da gibt es weniger "Spielraum" mit den Daten. Ich habe die Abfrage mal umgeschrieben auf MYSQL8-tauglich. Da ich im Moment keine MySQL8-Umgebung simulieren kann, probier es mal aus und gib Feedback, ob es klappt. Oder die Fehlermeldung.

$sql = "
SELECT
    uname,
    user_bday,

    -- Alter
    TIMESTAMPDIFF(YEAR, user_bday, CURDATE())
    - (
        MONTH(CURDATE()) < MONTH(user_bday)
        OR (
            MONTH(CURDATE()) = MONTH(user_bday)
            AND DAY(CURDATE()) < DAY(user_bday)
        )
    ) AS user_age,

    -- Tage bis nächster Geburtstag (29.02.-sicher)
    DATEDIFF(
        CASE
            WHEN
                MONTH(CURDATE()) < MONTH(user_bday)
                OR (
                    MONTH(CURDATE()) = MONTH(user_bday)
                    AND DAY(CURDATE()) <= DAY(user_bday)
                )
            THEN
                DATE(
                    CONCAT(
                        YEAR(CURDATE()), '-',
                        LPAD(MONTH(user_bday),2,'0'), '-',
                        LPAD(
                            LEAST(
                                DAY(user_bday),
                                DAY(
                                    LAST_DAY(
                                        CONCAT(
                                            YEAR(CURDATE()), '-',
                                            LPAD(MONTH(user_bday),2,'0'),
                                            '-01'
                                        )
                                    )
                                )
                            ),2,'0'
                        )
                    )
                )
            ELSE
                DATE(
                    CONCAT(
                        YEAR(CURDATE()) + 1, '-',
                        LPAD(MONTH(user_bday),2,'0'), '-',
                        LPAD(
                            LEAST(
                                DAY(user_bday),
                                DAY(
                                    LAST_DAY(
                                        CONCAT(
                                            YEAR(CURDATE()) + 1, '-',
                                            LPAD(MONTH(user_bday),2,'0'),
                                            '-01'
                                        )
                                    )
                                )
                            ),2,'0'
                        )
                    )
                )
        END,
        CURDATE()
    ) AS days_to

FROM {$user_prefix}_users

WHERE user_bday IS NOT NULL
  AND user_stat = 1

HAVING days_to <= {$days}

ORDER BY days_to ASC, user_age DESC
";


g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

Sven4972


Olaf / TerraProject

ok, dann kann ich das für die nächste Version mit übernehmen

Danke
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!