Pour enregistrer une date dans une base de données, il est possible de stocker la données du timestamp UNIX (exemple : 1348254909) ou d’utiliser le format date (exemple : 2012-12-31) ou datetime (exemple : 2012-12-31 23:59:59). Cet article explique comment transformer un timestamp en date ou datetime.
Requête pour transformer le timestamp
Dans MySQL il faut utiliser la fonction FROM_UNIXTIME() pour transformer une valeur de timestamp en datetime. A partir de cette fonction, il suffit d’utiliser la fonction de transtypage CAST() pour transformer un datetime en date. Dès lors, voici un exemple de requête qui permet de récolter une date dans le format souhaité :
SELECT colonne_timestamp, FROM_UNIXTIME(colonne_timestamp) as valeur_datetime, CAST(FROM_UNIXTIME(colonne_timestamp) as date) as valeur_date FROM table
Cette requête permet de retourner les résultats suivants :
colonne_timestamp | valeur_datetime | valeur_date |
---|---|---|
1347811456 | 2012-09-16 18:04:16 | 2012-09-16 |
1347811458 | 2012-09-16 18:04:18 | 2012-09-16 |
1347811462 | 2012-09-16 18:04:22 | 2012-09-16 |
1347811463 | 2012-09-16 18:04:13 | 2012-09-16 |
1347811465 | 2012-09-16 18:04:15 | 2012-09-16 |
Sauvegarder le timestamp en datetime
Afficher le résultat dans un SELECT est pratique, mais si le but est de changer la façon dont sont stockées les dates tout en conservant l’historique il faut utiliser un UPDATE de la façon suivante :
UPDATE table SET colonne_datetime = FROM_UNIXTIME(colonne_timestamp)
Intérêt
Modifier la valeur de timestamp en datetime possède quelques avantages :
- Plus facile à lire pour un humain
- Plus facile de sélectionner les données en fonction d’une année, d’un mois, d’un jour, d’une heure …
- Le 19 janvier 2038 le timestamp UNIX ne fonctionnera plus, mais le datetime fonctionnera toujours
Si vous souhaitez vérifier la date et l’heure d’un timestamp il est possible d’utiliser un outil en ligne pour convertir le timestamp.