Je dirai même plus !
Techniquement tu fais appel à des TIMESTAMP Mais il est possible d'utiliser les TIMEZONES.
Pour cela, il faut d'abord importer les zones depuis l'OS (Linux ici). Avec un utilisateur non-root :
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p -D mysql
Il se peut que ce message apparaisse, mais ce n'est pas grave :
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
Pour vérifier que l'import a réussi :
mysql -u root -p
SET time_zone = 'Europe/London';
SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2018-09-28 22:52:05 |
+---------------------+
SET time_zone = 'Europe/Paris';
SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2018-09-28 23:52:05 |
+---------------------+
Finalement, j'ouvre le fichier /etc/mysql/my.cnf
et j'ajoute la ligne suivante dans la section [mysqld] :
default-time-zone = 'Europe/Paris'
En mettant la timezone souhaitée bien sûr. Cela permet de fixer une fois pour toute la timezone de MySQL.
Puis je redémarre le service :
sudo systemctl restart mysql
Edit : Pour savoir quelle est la timezone courante :
select @@global.time_zone;
phpinfo()
:<?php
phpinfo();
?>
Chercher la section Loaded Configuration File
et ouvrir le fichier php.ini indiqué.
Modifier la ligne suivante en remplaçant TIMEZONE
par la valeur souhaitée :
date.timezone = TIMEZONE;
; Par exemple pour Paris :
date.timezone = Europe/Paris;
sudo systemctl restart apache2