Maison >base de données >tutoriel mysql >Comment convertir des numéros d'époque en dates lisibles par l'homme dans MySQL ?
Dans le domaine de la gestion de bases de données, il est souvent nécessaire de convertir les numéros d'époque en dates lisibles par l'homme. Les numéros d'époque, qui représentent un moment précis depuis une époque définie, sont couramment utilisés pour stocker des données temporelles dans des systèmes de bases de données comme MySQL.
Considérez le scénario hypothétique dans lequel vous avez un numéro d'époque, tel que 1389422614485, qui représente un moment précis dans le temps. Le type de données de cette valeur est varchar, et vous souhaitez le transformer dans un format de date compréhensible.
Solution détaillée
Pour réaliser cette conversion dans MySQL, vous allez besoin d'exploiter une combinaison de fonctions mathématiques et de la fonction from_unixtime() :
<code class="sql">mysql> select from_unixtime(floor(1389422614485/1000));</code>
Explication
Dans cet exemple, la fonction from_unixtime() est utilisée pour convertir le numéro d'époque, qui représente généralement les millisecondes depuis l'époque, dans une chaîne de date. Étant donné que notre numéro d'époque semble avoir une précision à la milliseconde, nous utilisons floor(1389422614485/1000) pour le convertir en secondes depuis l'époque, qui est l'entrée attendue par from_unixtime().
Sortie
+------------------------------------------+ | from_unixtime(floor(1389422614485/1000)) | +------------------------------------------+ | 2014-01-11 12:13:34 | +------------------------------------------+
La sortie affiche la date lisible par l'homme correspondant au numéro d'époque donné, le format étant « AAAA-MM-JJ HH:MM:SS ».
Mise à jour pour MySQL 8.0 et supérieur
À partir de la version MySQL 8.0, la fonction floor n'est plus nécessaire lorsque vous travaillez avec des millisecondes dans la fonction from_unixtime(). Vous pouvez directement fournir le numéro d'époque en millisecondes comme argument :
<code class="sql">mysql> select from_unixtime(1594838230234/1000);</code>
Cela donnera le résultat suivant :
+------------------------------------------+ | from_unixtime(1594838230234/1000) | +------------------------------------------+ | 2020-07-15 18:37:10.2340 | +------------------------------------------+
Cette version raffinée de la requête prend désormais également en charge la précision à la nanoseconde. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!