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
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
";
Hallo Olaf,
läuft ohne Fehlermeldung.
VG Sven
ok, dann kann ich das für die nächste Version mit übernehmen
Danke