¿Cómo se calcula la diferencia entre dos fechas, en el formato YYYY-MM-DD hh: mm: ss
y para obtener el valor del resultado en segundos o milisegundos?Diferencia entre dos fechas en MySQL
Respuesta
SELECT TIMEDIFF('2007-12-31 10:02:00','2007-12-30 12:01:01');
-- result: 22:00:59.
SELECT TIMESTAMPDIFF(SECOND,'2007-12-30 12:01:01','2007-12-31 10:02:00');
-- result: 79259 the difference in seconds with the time.
nice! TIMESTAMPDIFF ¡Funciona a la perfección! ¡Gracias! – GeoGo
¿Qué significa "la diferencia en segundos por días" exactamente? No entiendo por qué multiplicar el resultado de 'TIMEDIFF' por' 24 * 60 * 60' no es igual al resultado de 'TIMESTAMPDIFF'. –
¡Esta solución funcionó para mí! Pero en mi caso, me gustaría realizar el TIMESTAMPDIFF en DAY, pero sin considerar los fines de semana (sábado/domingo). Quiero decir, solo la diferencia de días de la semana ... ¿Es posible de una manera simple? Si no, me disculpo por las molestias y luego buscaré otra solución. TKs. – Massa
Si está trabajando con columnas DATE (o puede convertirlas en columnas de fecha), intente DATEDIFF() y luego multiplique por 24 horas, 60 min, 60 segundos (ya que DATEDIFF devuelve diff en días). A partir de MySQL:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
por ejemplo:
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30 00:00:00') * 24*60*60
No creo que esto funcione. 'DATEDIFF' no devuelve fracciones. –
O bien, puede utilizar la función TIMEDIFF
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00', '2000:01:01 00:00:00.000001');
'-00:00:00.000001'
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001' , '2008-12-30 01:01:01.000002');
'46:58:57.999999'
TC quiere obtener el valor de los resultados en segundos o milisegundos. –
select
unix_timestamp('2007-12-30 00:00:00') -
unix_timestamp('2007-11-30 00:00:00');
unix_timestamp - una forma estándar de sincronización en los sistemas de tipo Unix. Representa un entero de 32 bits, que indica cuántos segundos han pasado desde 01/01/1970 00:00:00. Es decir, un límite inferior. El límite superior está limitado a 2.106 por año, pero debido a programas frecuentes no funciona con este valor (en lugar de un entero sin signo que usa un entero con signo) se considera el límite superior en 2038. –
+ al pasar por el horario de verano se deduce incorrectamente/agregó –
Esta función toma la diferencia entre dos fechas y muestra en un formato de fecha aaaa-mm-dd. Todo lo que necesita es ejecutar el siguiente código y luego usar la función. Después de la ejecución se puede utilizar de esta manera
SELECT datedifference(date1, date2)
FROM ....
.
.
.
.
DELIMITER $$
CREATE FUNCTION datedifference(date1 DATE, date2 DATE) RETURNS DATE
NO SQL
BEGIN
DECLARE dif DATE;
IF DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2)))) < 0 THEN
SET dif=DATE_FORMAT(
CONCAT(
PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 ,
'-',
PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 ,
'-',
DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(DATE_SUB(date1, INTERVAL 1 MONTH)), '-', DAY(date2))))),
'%Y-%m-%d');
ELSEIF DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2)))) < DAY(LAST_DAY(DATE_SUB(date1, INTERVAL 1 MONTH))) THEN
SET dif=DATE_FORMAT(
CONCAT(
PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 ,
'-',
PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 ,
'-',
DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2))))),
'%Y-%m-%d');
ELSE
SET dif=DATE_FORMAT(
CONCAT(
PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 ,
'-',
PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 ,
'-',
DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2))))),
'%Y-%m-%d');
END IF;
RETURN dif;
END $$
DELIMITER;
select TO_CHAR(TRUNC(SYSDATE)+(to_date('31-MAY-2012 12:25', 'DD-MON-YYYY HH24:MI')
- to_date('31-MAY-2012 10:37', 'DD-MON-YYYY HH24:MI')),
'HH24:MI:SS') from dual
- resultado: 01:48:00
bien no es exactamente lo que hizo la OP, pero es lo que quería Qué :-)
Creo que la respuesta aceptada actual es mejor. – ForceMagic
SELECT TIMESTAMPDIFF(HOUR,NOW(),'2013-05-15 10:23:23')
calculates difference in hour.(for days--> you have to define day replacing hour
SELECT DATEDIFF('2012-2-2','2012-2-1')
SELECT TO_DAYS ('2012-2-2')-TO_DAYS('2012-2-1')
Usted simplemente hacer esto:
SELECT (end_time - start_time) FROM t; -- return in Millisecond
SELECT (end_time - start_time)/1000 FROM t; -- return in Second
Cuidado: (final - inicio) NO devuelve una diferencia de segundos entre los valores de fecha y hora. Devuelve un número que es la diferencia entre los números decimales que se parecen a aaaammddhhmmss. – helloPiers
Consigue la diferencia de fechas en día el uso de DATEDIFF
SELECT DATEDIFF('2010-10-08 18:23:13', '2010-09-21 21:40:36') AS days;
+------+
| days |
+------+
| 17 |
+------+
O
Consulte el siguiente enlace MySql difference between two timestamps in days?
Esta diferencia calcular el código entre dos fechas en formato dd aaaa MM.
declare @StartDate datetime
declare @EndDate datetime
declare @years int
declare @months int
declare @days int
--NOTE: date of birth must be smaller than As on date,
--else it could produce wrong results
set @StartDate = '2013-12-30' --birthdate
set @EndDate = Getdate() --current datetime
--calculate years
select @years = datediff(year,@StartDate,@EndDate)
--calculate months if it's value is negative then it
--indicates after __ months; __ years will be complete
--To resolve this, we have taken a flag @MonthOverflow...
declare @monthOverflow int
select @monthOverflow = case when datediff(month,@StartDate,@EndDate) -
(datediff(year,@StartDate,@EndDate) * 12) <0 then -1 else 1 end
--decrease year by 1 if months are Overflowed
select @Years = case when @monthOverflow < 0 then @years-1 else @years end
select @months = datediff(month,@StartDate,@EndDate) - (@years * 12)
--as we do for month overflow criteria for days and hours
--& minutes logic will followed same way
declare @LastdayOfMonth int
select @LastdayOfMonth = datepart(d,DATEADD
(s,-1,DATEADD(mm, DATEDIFF(m,0,@EndDate)+1,0)))
select @days = case when @monthOverflow<0 and
DAY(@StartDate)> DAY(@EndDate)
then @LastdayOfMonth +
(datepart(d,@EndDate) - datepart(d,@StartDate)) - 1
else datepart(d,@EndDate) - datepart(d,@StartDate) end
select
@Months=case when @days < 0 or DAY(@StartDate)> DAY(@EndDate) then @Months-1 else @Months end
Declare @lastdayAsOnDate int;
set @lastdayAsOnDate = datepart(d,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@EndDate),0)));
Declare @lastdayBirthdate int;
set @lastdayBirthdate = datepart(d,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@StartDate)+1,0)));
if (@Days < 0)
(
select @Days = case when(@lastdayBirthdate > @lastdayAsOnDate) then
@lastdayBirthdate + @Days
else
@lastdayAsOnDate + @Days
end
)
print convert(varchar,@years) + ' year(s), ' +
convert(varchar,@months) + ' month(s), ' +
convert(varchar,@days) + ' day(s) '
¿Por qué no
select sum (Fecha1 - Fecha2) de la tabla
fecha1 y la fecha 2 de fecha y hora son
Si ha almacenado una fecha en el campo de texto como cadena que pueda implementar este código, obtendrá la lista de los últimos días de una semana, un mes o un año de clasificación:
SELECT * FROM `table` WHERE STR_TO_DATE(mydate, '%d/%m/%Y') < CURDATE() - INTERVAL 30 DAY AND STR_TO_DATE(date, '%d/%m/%Y') > CURDATE() - INTERVAL 60 DAY
//This is for a month
SELECT * FROM `table` WHERE STR_TO_DATE(mydate, '%d/%m/%Y') < CURDATE() - INTERVAL 7 DAY AND STR_TO_DATE(date, '%d/%m/%Y') > CURDATE() - INTERVAL 14 DAY
//This is for a week
% d% m% Y es su formato de fecha
Esta consulta muestra el registro entre los días que estableció como: Debajo de los últimos 7 días y Arriba de los últimos 14 días, por lo que sería su último registro semanal para mostrar el mismo concepto es por mes o año. Cualquiera que sea el valor que proporcione en una fecha inferior como: a continuación, de 7 días, el otro valor sería el doble de 14 días.Lo que estamos diciendo aquí es que obtenga todos los registros anteriores de los últimos 14 días y menos de los últimos 7 días. Este es un registro semanal que puede cambiar el valor a 30-60 días por un mes y también por un año.
Gracias Espero que ayude a alguien.
SELECT TIMESTAMPDIFF(SECOND,'2018-01-19 14:17:15','2018-01-20 14:17:15');
segundo enfoque
SELECT (DATEDIFF('1993-02-20','1993-02-19')*(24*60*60))AS 'seccond';
CURRENT_TIME() --this will return current Date
DATEDIFF('','') --this function will return DAYS and in 1 day there are 24hh 60mm 60sec
- 1. Calcular la diferencia entre dos fechas en MySQL
- 2. C# - ¿Diferencia entre dos fechas?
- 3. Android diferencia entre dos fechas en segundos
- 4. Diferencia entre dos fechas en Python
- 5. Diferencia, en minutos, entre dos fechas
- 6. Diferencia entre fechas en dos filas consecutivas
- 7. calcular la diferencia entre dos fechas
- 8. Diferencia de días entre dos fechas
- 9. MySQL cálculo semana entre dos fechas
- 10. Calcula la diferencia entre dos fechas en PHP
- 11. Diferencia entre fechas en JavaScript
- 12. Diferencia en el tiempo entre dos fechas en Java
- 13. ¿Cómo obtengo la diferencia entre dos fechas en JavaScript?
- 14. ¿Cómo verifico la diferencia, en segundos, entre dos fechas?
- 15. encuentra la diferencia entre dos fechas en segundos
- 16. ¿Cómo encuentro la diferencia horaria entre dos fechas en PHP?
- 17. Obtenga la diferencia en años entre dos fechas en MySQL como un número entero
- 18. Cómo calcular la diferencia entre dos fechas en meses en MySQL
- 19. Obteniendo datos entre dos cadenas de fechas en MySQL
- 20. Seleccione la diferencia entre las fechas de fila en MySQL
- 21. ¿Cómo obtener el número de días de diferencia entre dos fechas en mysql?
- 22. Matriz de fechas entre dos fechas
- 23. ¿Cómo obtener la diferencia entre dos fechas redondeadas a horas
- 24. ¿Cómo puedo obtener la diferencia entre dos fechas bajo bash
- 25. ¿Cómo puedo encontrar la diferencia entre dos fechas usando Javascript
- 26. Ruby, Rails y la diferencia entre dos fechas
- 27. Mysql: seleccione todos los datos entre dos fechas
- 28. clojureql seleccionar entre dos fechas
- 29. ¿Cuántos segundos entre dos fechas?
- 30. Diferencia entre dos DateTimes C#?
@didxga: Cuidado: (final - inicial) no devuelve la diferencia entre los valores de fecha y hora segundos. Devuelve un número que es la diferencia entre los números decimales que se parecen a aaaammddhhmmss. – helloPiers