Comment récupérer des microsecondes ou des millisecondes à partir de l'heure actuelle de MySQL?
Je suis en train de créer ma première fonction stockée sur MySQL. Dans cette fonction, je veux retourner le timestamp de la date et l'heure actuelles avec 3 microseconde chiffres comme ceci: YYYYMMDDHHMMSSZZZ
Je utiliser ce numéro dans ma base de données pour créer des clés uniques pour mes dossiers en mode hors connexion, afin qu'ils ne tombent pas en panne lors de mes systèmes de fusionner les bases de données à partir de différents serveurs en mode hors connexion.
Donc mon premier essai a été SELECT CAST(MICROSECOND(NOW()) AS CHAR(3));
Mais elle renvoie 0.
Si j'essaie SELECT CAST(MICROSECOND('2009-12-31 23:59:59.001210') AS CHAR(3));
Il retourne 121, que j'en ai besoin.
Donc, Comment dire à MySQL que je veux savoir le nombre de microsecondes de l'heure actuelle?
EDIT:
Considérez ceci:
CREATE FUNCTION CHAVE (pTable VARCHAR(32)) RETURNS CHAR(20)
BEGIN
DECLARE vSigla CHAR(3);
DECLARE vDateTime CHAR(14);
DECLARE vMilli CHAR(3);
DECLARE vKey CHAR(20);
SET vSigla = (SELECT SIGLA FROM TABLELIST WHERE NOME = pTable);
SET vDateTime = (SELECT CAST(LEFT(UTC_TIMESTAMP()+0, 14) AS CHAR(14)));
SET vMilli = LPAD(FLOOR(RAND() * 1000), 3, '0');
SET vKey = CONCAT(vSigla, vDateTime, vMilli);
RETURN vKey;
END;
Le résultat de:
INSERT INTO TABLEX (dateID, name) VALUES (CHAVE('TABLEX'), 'EASI');
Sera, à partir de CHAVE('TABLEX'):
KEY20130320151159666
Où 666 est un numéro aléatoire, mais je voudrais qu'il était le véritable millisecondes compter de la date couranteje n'ai donc pas possible de clés dupliquées.
Si seulement je pouvais utiliser SHOW COLUMNS FROM @TableName WHERE FIELD_NAME LIKE '%_ID' LIMIT 1
et insérer que dans un non-dynamique SÉLECTIONNEZ cette option pour obtenir l'ordre de la milliseconde du dernier enregistrement de la table...
source d'informationauteur PSyLoCKe
Vous devez vous connecter pour publier un commentaire.
MySQL 5.6 prend en charge la précision à la milliseconde dans le
sysdate
fonction.essayer
select sysdate(6)
sera de retour2013-04-16 13:47:56.273434
et
select sysdate(3)
sera de retour2013-04-16 13:47:56.273
Prendre un coup d'oeil à ce que MySQL est dit(http://dev.mysql.com/doc/refman/5.1/en/fractional-seconds.html):
However, when MySQL stores a value into a column of any temporal data type, it discards any fractional part and does not store it.
Si vous avez besoin de stocker non pas comme une valeur de date, mais comme une simple valeur à virgule flottante.
Pour mysql 5.6