una ultimo registro por obtener mes insertar fechas fecha entre ejemplo diferencia comparar año sql sql-server datetime sql-server-2000

ultimo - SQL obtiene el último registro de hora de fecha



obtener mes y año de una fecha sql (8)

Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de obtener el último registro de fecha y hora de una tabla que ocurre para almacenar varios estados. Mi mesa se ve así:

+---------+------------------------+-------+ |filename |Dates |Status | +---------+------------------------+-------+ |abc.txt |2012-02-14 12:04:45.397 |Open | |abc.txt |2012-02-14 12:14:20.997 |Closed | |abc.txt |2013-02-14 12:20:59.407 |Open | |dfg.txt |2012-02-14 12:14:20.997 |Closed | |dfg.txt |2013-02-14 12:20:59.407 |Open | +---------+------------------------+-------+

Los resultados deben ser

+---------+------------------------+-------+ |filename |Dates |Status | +---------+------------------------+-------+ |abc.txt |2013-02-14 12:20:59.407 |Open | |dfg.txt |2013-02-14 12:20:59.407 |Open | +---------+------------------------+-------+


La sintaxis exacta, por supuesto, dependerá de la base de datos, pero algo como:

SELECT * FROM my_table WHERE (filename, Dates) IN (SELECT filename, Max(Dates) FROM my_table GROUP BY filename)

Esto le dará resultados exactamente lo que solicita y muestra arriba. Fiddle: http://www.sqlfiddle.com/#!2/3af8a/1/0


Prueba esto:

SELECT filename,Dates,Status FROM TableName WHERE Dates In (SELECT MAX(Dates) FROM TableName GROUP BY filename)


Si desea una fila para cada nombre de archivo, reflejando un estado específico y listando la fecha más reciente, este es su amigo:

select filename , status , max_date = max( dates ) from some_table t group by filename , status having status = ''<your-desired-status-here>''

¡Fácil!


Teniendo en cuenta que max (fechas) puede ser diferente para cada nombre de archivo, mi solución:

SELECT distinct filename ,last_value(dates)over (PARTITION BY filename ORDER BY filename)posd ,last_value(status)over (PARTITION BY filename ORDER BY filename )poss FROM distemp.dbo.Shmy_table

http://sqlfiddle.com/#!3/c94a2/2

HTH


este trabajo

select filename, dates, status from yt a where a.dates = ( select max(dates) from yt b where a.filename = b.filename ) ;


SELECT * FROM table WHERE Dates IN (SELECT max(Dates) FROM table);


SELECT TOP 1 * FROM foo ORDER BY Dates DESC

Volverá un resultado con la última fecha.

SELECT * FROM foo WHERE foo.Dates = (SELECT MAX(Dates) FROM foo)

Devolverá todos los resultados que tengan la misma fecha máxima, al milisegundo.

Esto es para SQL Server. DATEPART que utilice la función DATEPART si desea usar fechas pero no horas.


select max(dates) from yourTable group by dates having count(status) > 1