Solución:
Si por “convertir a segundos“, Quiere decir “convertir a una marca de tiempo UNIX” (es decir, número de segundos desde 1970-01-01
), entonces puedes usar el UNIX_TIMESTAMP
función:
select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...
Y, en aras de la completitud, para convertir de una marca de tiempo Unix a una fecha y hora, puede usar el FROM_UNIXTIME
función.
Si desea tener la diferencia entre dos valores DATETIME, use TIMESTAMPDIFF
:
TIMESTAMPDIFF (unidad, datetime_expr1, datetime_expr2)
Devoluciones
datetime_expr2 – datetime_expr1
, dóndedatetime_expr1
ydatetime_expr2
son expresiones de fecha o fecha y hora. Una expresión puede ser una fecha y la otra una fecha y hora; un valor de fecha se trata como una fecha y hora que tiene la parte de tiempo ’00: 00: 00 ‘cuando sea necesario. La unidad del resultado (un número entero) viene dada por el argumento de la unidad. Los valores legales de la unidad son los mismos que se enumeran en la descripción delTIMESTAMPADD()
función.
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
puede también ser HOUR
que es lo que pediste en uno de los comentarios.
El argumento de la unidad puede ser cualquiera de los siguientes:
- MICROSEGUNDO
- SEGUNDO
- MINUTO
- HORA
- DÍA
- SEMANA
- MES
- CUARTO
- AÑO
Por supuesto, el nivel de utilidad de algunas de las otras opciones vendrá determinado por la granularidad de los datos. Por ejemplo, “MICROSECOND” solo tendrá un uso limitado si no almacena microsegundos en sus valores DATETIME.
Use TIME_TO_SEC en versiones anteriores para mysql
SELECT TIME_TO_SEC (columna de tiempo) FROM tabla