MySQL
Temps avec précision de la seconde
Recherche…
Remarques
Vous devez être à la version 5.6.4 ou ultérieure de MySQL pour déclarer des colonnes avec des types de données de fraction de seconde.
Par exemple, DATETIME(3)
vous donnera une résolution en millisecondes dans vos horodatages et TIMESTAMP(6)
vous donnera une résolution en microsecondes sur un horodatage de style * nix.
Lisez ceci: http://dev.mysql.com/doc/refman/5.7/fr/fractional-seconds.html
NOW(3)
vous donnera l'heure actuelle du système d'exploitation de votre serveur MySQL avec une précision en milliseconde.
(Notez que l'arithmétique fractionnaire interne de MySQL, comme * 0.001, est toujours traitée comme une virgule flottante à double précision IEEE754. Il est donc peu probable que vous perdiez en précision avant que le soleil ne devienne une étoile naine blanche.)
Obtenez l'heure actuelle avec une précision en milliseconde
SELECT NOW(3)
fait le tour
Obtenez l'heure actuelle sous une forme qui ressemble à un horodatage Javascript.
Les horodatages Javascript sont basés sur le type de données vénérable UNIX time_t
et indiquent le nombre de millisecondes 1970-01-01 00:00:00
depuis le 1970-01-01 00:00:00
UTC.
Cette expression obtient l'heure actuelle en tant qu'entier d'horodatage Javascript. (Il le fait correctement quel que soit le paramètre time_zone actuel.)
ROUND(UNIX_TIMESTAMP(NOW(3)) * 1000.0, 0)
Si vous avez des valeurs TIMESTAMP
stockées dans une colonne, vous pouvez les récupérer en tant qu'horodatage Javascript entier à l'aide de la fonction UNIX_TIMESTAMP ().
SELECT ROUND(UNIX_TIMESTAMP(column) * 1000.0, 0)
Si votre colonne contient des colonnes DATETIME
et que vous les récupérez comme horodatage Javascript, ces horodatages seront compensés par le décalage horaire du fuseau horaire dans lequel ils sont stockés.
Créez un tableau avec des colonnes pour stocker le temps inférieur à la seconde.
CREATE TABLE times (
dt DATETIME(3),
ts TIMESTAMP(3)
);
crée une table avec des champs date / heure de précision en millisecondes.
INSERT INTO times VALUES (NOW(3), NOW(3));
Insère une ligne contenant les valeurs NOW()
avec une précision en millisecondes dans la table.
INSERT INTO times VALUES ('2015-01-01 16:34:00.123','2015-01-01 16:34:00.128');
insère des valeurs de précision spécifiques à la milliseconde.
Notez que vous devez utiliser NOW(3)
plutôt que NOW()
si vous utilisez cette fonction pour insérer des valeurs de temps de haute précision.
Convertissez une valeur de date / heure en millisecondes de précision en texte.
%f
est le spécificateur de format de précision fractionnaire pour la fonction DATE_FORMAT () .
SELECT DATE_FORMAT(NOW(3), '%Y-%m-%d %H:%i:%s.%f')
affiche une valeur comme 2016-11-19 09:52:53.248000
avec microsecondes fractionnaires. Parce que nous avons utilisé NOW(3)
, les trois derniers chiffres de la fraction sont 0.
Stocker un horodatage Javascript dans une colonne TIMESTAMP
Si vous avez une valeur d'horodatage Javascript, par exemple 1478960868932
, vous pouvez la convertir en une valeur temporelle fractionnelle MySQL comme ceci:
FROM_UNIXTIME(1478960868932 * 0.001)
Il est simple d'utiliser ce type d'expression pour stocker votre horodatage Javascript dans une table MySQL. Faites ceci:
INSERT INTO table (col) VALUES (FROM_UNIXTIME(1478960868932 * 0.001))
(Évidemment, vous voudrez insérer d'autres colonnes.)