C'est bien à cause du mode SQL NO_ZERO_DATE
. Vous auriez dû voir cela quand Anand Rockzz a lié au manuel, mais ce lien n'est que la moitié de l'explication. Depuis MySQL 5.7.4, le paramètre est obsolète. Dans votre premier exemple, vous fixez une date ; dans le second, NO_ZERO_DATE
provoque le retour de NULL car vous ne spécifiez pas de date. À partir de la version 5.7.8, NO_ZERO_DATE
et NO_ZERO_IN_DATE
ont été inclus avec la valeur sql_mode par défaut. Selon le manuel , il semble que l'obsolescence et la suppression aient été partiellement annulées (à partir de la version 5.7.8), vous pourrez donc peut-être le définir explicitement dans votre my.cnf
(ou par session).
Vous devriez également vous référer au manuel concernant le NO_ZERO_DATE directives.