web-dev-qa-db-fra.com

Chaîne à horodatage dans mysql

Existe-t-il un moyen de convertir une chaîne en horodatage UNIX dans MySQL?

Par exemple, j'ai une chaîne 2011-12-21 02:20pm qui doit être au format d'horodatage unix.

29
AvMishra

UNIX_TIMESTAMP() fait l'affaire:

SELECT UNIX_TIMESTAMP('2011-12-21 14:20:00');

Cependant, la fonction UNIX_TIMESTAMP() ne prend qu'une date standard au format MySQL. Si vous souhaitez utiliser la notation AM/PM, vous devrez d'abord utiliser STR_TO_DATE comme ceci:

SELECT UNIX_TIMESTAMP(
    STR_TO_DATE('2011-12-21 02:20pm', '%Y-%m-%d %h:%i%p')
);
49
a'r

Bien que @ a'r ait déjà donné la bonne réponse, je voudrais ajouter quelque chose ici: les deux paramètres STR_TO_DATE () fonction, format 'date string' et chaîne 'date format', devraient ont le placement correspondant de "-" et ":".

Par exemple, les 4 requêtes suivantes renvoient exactement le même résultat 28/05/2014 11:30:10

SELECT STR_TO_DATE('2014-05-28 11:30:10','%Y-%m-%d %H:%i:%s');

SELECT STR_TO_DATE('20140528 11:30:10','%Y%m%d %H:%i:%s');

SELECT STR_TO_DATE('2014-05-28 113010','%Y-%m-%d %H%i%s') ;

SELECT STR_TO_DATE('20140528 113010','%Y%m%d %H%i%s');

Remarque: les 2 paramètres de la fonction STR_TO_DATE () dans chaque requête ont un placement correspondant pour '-' et ':'

23
sactiw