¿Hay alguna forma de hacer una consulta en MySQL que me dé la diferencia entre dos marcas de tiempo en segundos, o tendría que hacer eso en PHP? Y si es así, ¿cómo haré eso?MySQL: cómo obtener la diferencia entre dos marcas de tiempo en segundos
Respuesta
podría utilizar el TIMEDIFF()
y los TIME_TO_SEC()
funciones de la siguiente manera:
SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
También es posible usar la función UNIX_TIMESTAMP()
como @Amber suggested en otra respuesta:
SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') -
UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Si está utilizando el TIMESTAMP
tipo de datos, supongo que la solución UNIX_TIMESTAMP()
sería un poco más rápida, ya que los valores TIMESTAMP
ya están almacenados como un número entero que representa el número r de segundos desde la época (Source). Citando la docs:
Cuando
UNIX_TIMESTAMP()
se utiliza en una columna deTIMESTAMP
, la función devuelve el valor de marca de tiempo interno directamente, sin conversión implícita “-serie-a Unix-marca de tiempo”.Tenga en cuenta que
TIMEDIFF()
return data type ofTIME
.TIME
valores pueden variar desde '-838: 59: 59' a '838: 59: 59' (aproximadamente 34,96 días)
UNIX_TIMESTAMP(ts1) - UNIX_TIMESTAMP(ts2)
Si desea una diferencia sin firmar, añada una ABS()
alrededor de la expresión.
Alternativamente, puede usar TIMEDIFF(ts1, ts2)
y luego convertir el resultado de la hora en segundos con TIME_TO_SEC()
.
¿Qué tal "TIMESTAMPDIFF":
SELECT TIMESTAMPDIFF(SECOND,'2009-05-18','2009-07-29') from `post_statistics`
http://www.w3resource.com/mysql/date-and-time-functions/mysql-timestampdiff-function.php
Si su columna de fecha está en otra forma distinta a YYYY-MM-DD intente hacer esto: 'str_to_date (date_column, '% m /% d /% Y')' dentro de la función TIMESTAMPDIFF para la columna que lo necesita corregido. – greaterKing
Tenga en cuenta que la solución TIMEDIFF()
solo funciona cuando el datetimes
es menos de 35 días aparte! TIMEDIFF()
devuelve un tipo de datos TIME
, y el valor max porque el tiempo es 838: 59: 59 horas (= 34,96 días)
- 1. Diferencia de MySql entre dos marcas de tiempo en segundos?
- 2. ¿Diferencia de MySql entre dos marcas de tiempo en días?
- 3. segundos Obtención entre dos Oracle marcas de tiempo
- 4. java calcular el tiempo entre dos marcas de tiempo
- 5. MYSQL - Recuperar marcas de tiempo entre fechas
- 6. ¿Cómo verifico la diferencia, en segundos, entre dos fechas?
- 7. Diferencia entre dos fechas en MySQL
- 8. Android diferencia entre dos fechas en segundos
- 9. Cómo representar la diferencia contextual entre dos marcas de tiempo en JavaScript?
- 10. Verifique la diferencia en segundos entre dos veces
- 11. Selección de registros entre dos marcas de tiempo
- 12. encuentra la diferencia entre dos fechas en segundos
- 13. Diferencia Calcular tiempo entre dos filas
- 14. ¿Contar meses entre dos marcas de tiempo en postgresql?
- 15. diferencia de tiempo en segundos
- 16. Calcular la diferencia entre dos fechas en MySQL
- 17. ¿Cómo calcular la diferencia de tiempo entre las marcas de tiempo de Unix?
- 18. Diferencia en el tiempo entre dos fechas en Java
- 19. Cómo obtener la diferencia horaria entre dos valores
- 20. Días, horas, minutos, segundos entre dos fechas
- 21. Cómo obtener la diferencia de tiempo en iPhone
- 22. ¿Cómo obtener la diferencia entre dos QDateTimes en milisegundos?
- 23. obtener tiempo entre dos veces al día
- 24. ¿Cuántos segundos entre dos fechas?
- 25. Obtener marcas de tiempo de la semana actual
- 26. diferentes marcas de la cotización de MySQL
- 27. ¿Cómo puedo obtener la diferencia entre dos fechas bajo bash
- 28. Rieles 3. ¿Cómo obtener la diferencia entre dos matrices?
- 29. ¿Cómo obtener la diferencia entre dos fechas redondeadas a horas
- 30. ¿Cómo obtener el número de días de diferencia entre dos fechas en mysql?
También puede utilizar [TIMESTAMPDIFF] (http://dev.mysql.com/ doc/refman/5.1/es/date-and-time-functions.html # function_timestampdiff), que lo hace en una sola función - simplemente configure el parámetro 'unit' en' SECOND'. – Mike
+1 para la explicación del rendimiento. No estaba usando UNIX_TIMESTAMP() porque pensé que tomaría más tiempo. – elcool