Najprawdopodobniej problem tkwi w różnicy typów danych.
Według dokumentacji MySQLa: https://dev.mysql.com/doc/refman/8.4/en/date-and-time-functions.html#function_timediff
TIMEDIFF() returns expr1 − expr2 expressed as a time value. expr1 and expr2 are strings which are converted to TIME or DATETIME expressions; these must be of the same type following conversion. Returns NULL if expr1 or expr2 is NULL.
Czyli TIMEDIFF oczekuje dwóch argumentów typu string, które konwertowane są do TIME lub DATETIME. Jeśli podasz funkcji inne typy, np. DATE, MySQL spróbuje je skonwertować. W Twoim przykładzie:
date(now()) - jest typu DATE
grun_date - jest typu DATE
Zgodnie z dokumentacja TIMEDIFF, expr1 i expr2 są stringami, ale przekazujesz DATE, więc prawdopodobnie zachodzi konwersja z DATE do stringa, a następnie konwersja tegoż stringa do TIME.
Zerknij co się dzieje w takim zapytaniu:
Kopiuj
select
now() now1,
date(now()) date1,
cast(date(now()) as char) as string1,
cast(cast(date(now()) as char) as time) time1
;
Zobacz jak zdefiniowany jest typ TIME: https://dev.mysql.com/doc/refman/8.4/en/time.html