Je n'ai pas été capable de trouver (googler, lire le manuel de référence mysql) comment obtenir la valeur de DATETIME en secondes dans MySQL.
Je ne veux pas extraire des secondes de datetime, mais les convertir en secondes.
Si vous voulez avoir la différence entre deux valeurs DATETIME, utilisez TIMESTAMPDIFF
:
TIMESTAMPDIFF (unité, datetime_expr1, datetime_expr2)
Renvoie
datetime_expr2 – datetime_expr1
, oùdatetime_expr1
etdatetime_expr2
sont des expressions de date ou de date/heure. Une expression peut être une date et l'autre une date/heure; une valeur de date est traitée comme une date/heure ayant la partie heure "00: 00: 00" si nécessaire. L'unité pour le résultat (un entier) est donnée par l'argument unité. Les valeurs légales de l'unité sont identiques à celles répertoriées dans la description de la fonctionTIMESTAMPADD()
.
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885
unit
peut aussi être HOUR
, ce que vous avez demandé dans l'un des commentaires.
L'argument de l'unité peut être l'un des suivants:
Le niveau d’utilité de certaines des autres options dépendra bien entendu de la granularité des données. Par exemple, "MICROSECOND" n'aura qu'une utilisation limitée si vous ne stockez pas de microsecondes dans vos valeurs DATETIME.
Si par "convertir en secondes", vous voulez dire "convertir en un Timestamp UNIX" (c'est-à-dire le nombre de secondes depuis 1970-01-01
), vous pouvez utiliser le UNIX_TIMESTAMP
une fonction :
select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...
Et pour compléter, pour convertir d’un horodatage Unix en date/heure, vous pouvez utiliser la fonction FROM_UNIXTIME
.
Utiliser TIME_TO_SEC dans les versions précédentes pour mysql
SELECT TIME_TO_SEC (colonne d'heure) FROM table
j'ai utilisé dans mysql
TO_SECONDS (votre date va ici) méthode pour convertir la date en secondes à partir de l'année 0
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
La fonction UNIX_TIMESTAMP ( datetime ) renvoie l'heure unix, qui correspond au nombre de secondes écoulées depuis le 1er janvier 1970 à 0000 UTC. C'est peut-être ce dont vous avez besoin, mais pas si vous traitez avec des dates de naissance, des dates historiques ou des dates postérieures à 2037.
À partir de mysql 5.5.0, vous pouvez utiliser to_seconds()
TO_SECONDS(FIELD_NAME)
FIELD_NAME doit être de type DATETIME
J'ai créé ma propre requête pour votre problème:
SELECT HOUR(`colname`) * 3600 + MINUTE(`colname`) * 60 + SECOND(`colname`)
FROM widgets
WHERE id = 1;
id = 1
si vous devez prendre une ligne spécifique.