Horodatages MySQL :
Sont stockés en UTC
Ils sont convertis en UTC lors du stockage et reconvertis dans votre fuseau horaire lors de la récupération. Si vous modifiez les paramètres de fuseau horaire , les valeurs récupérées changent également.
Peut être automatiquement initialisé et mis à jour
Vous pouvez définir leur valeur par défaut et / ou leur valeur de mise à jour automatique sur CURRENT_TIMESTAMP
Avoir une gamme de 1970-01-01 00:00:01 UTC
à2038-01-19 03:14:07 UTC
Alors que MySQL datetime :
Ce que vous stockez, c'est ce que vous obtenez ™.
Avoir une gamme de 1000-01-01 00:00:00
à9999-12-31 23:59:59
Les valeurs en dehors de la plage peuvent fonctionner - mais seules les valeurs dans la plage sont garanties de fonctionner.
Vous pouvez stocker des dates où le jour ou le mois est égal à zéro.
C'est la façon MySQL de stocker les anniversaires! Vous ne pouvez pas faire cela avec un TIMESTAMP
, à la seule exception étant la valeur zéro de 0000-00-00
.
Vous pouvez stocker des dates non valides, si vous en avez besoin, en mode ALLOW_INVALID_DATES .
Vous pouvez définir la valeur par défaut sur NOW()
dans certains cas, mais le moyen préférable et plus naturel de dates automatiquement initialisées et mises à jour est TIMESTAMP
.
Et bien sûr, il y a aussi DATE
et TIME
, qui fonctionnent comme DATETIME
, mais bien sûr, DATE
ne se soucient pas du temps et TIME
ne se soucient pas de la date. Les quatre types de données fonctionnent parfaitement avec le large éventail de fonctions de date et d'heure , mais lorsque vous mélangez des types de données, vous devez être conscient des effets de conversion .
Maintenant, à votre question: vous devez utiliser DATETIME
partout. Pas pour des raisons techniques, mais comme vous ne savez toujours pas comment MySQL fonctionne, DATETIME
c'est le choix le plus simple. Cela signifie que vous devrez calculer l'horodatage actuel en PHP avant de le stocker, c'est aussi simple que:
$mysqldate = date("Y-m-d H:i:s");
La fonction de date de PHP fonctionne comme:
string date ( string $format [, int $timestamp = time() ] )
Le "Y-m-d H:i:s"
format est celui compatible avec MySQL et en laissant le second paramètre vide, les date()
appels time()
pour obtenir l' horodatage UNIX actuel .
L'utilisation d'un TIMESTAMP
au lieu d'un DATETIME
a la valeur ajoutée de MySQL qui assume la responsabilité de décider de l'horodatage actuel, et vous pouvez ignorer le champ lorsque vous insérez / mettez à jour. Mais comme vous envoyez déjà une requête et que le code pour obtenir l'horodatage actuel en PHP est minimal, vous pouvez tout faire en toute sécurité DATETIME
.
En ce qui concerne le code réel pour stocker l'horodatage PHP dans la base de données, vous devriez regarder les objets de données PHP , et si vous n'êtes toujours pas clair, demandez plutôt à StackOverflow . Mais il y a déjà près de 1 500 questions liées , assurez-vous de les parcourir avant de les poser. Juste un indice, les déclarations préparées sont la façon dont les enfants cool le font.