sentencias lista ejemplos datos consultas comandos clausulas avanzadas sql sql-server sql-server-2005

ejemplos - lista de comandos sql



Instrucción SQL para seleccionar todas las filas del día anterior (9)

Estoy buscando una buena instrucción SQL para seleccionar todas las filas del día anterior de una tabla. La tabla contiene una columna de fecha y hora. Estoy usando SQL Server 2005.


En SQL Server, haga esto así:

where cast(columnName as date) = cast(getdate() -1 as date)

Deberías usar ambos lados de la expresión hasta la fecha para evitar problemas con el formato del tiempo.

Si necesita controlar el intervalo con más detalle, debe intentar algo como:

declare @start datetime = cast(getdate() - 1 as date) declare @end datetime = cast(getdate() - 1 as date) set @end = dateadd(second, 86399, @end)


Es un hilo muy viejo, pero aquí está mi opinión. En lugar de 2 cláusulas diferentes, una mayor que y menor que. Uso esta sintaxis a continuación para seleccionar registros de la fecha A. Si desea un rango de fechas, las respuestas anteriores son el camino a seguir.

SELECT * FROM TABLE_NAME WHERE DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0

En el caso anterior, X será -1 para los registros de ayer


Esto debería hacerlo:

WHERE `date` = CURDATE() - INTERVAL 1 DAY


No puedo probarlo ahora, pero:

select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)


Otra forma de decirlo "Ayer" ...

Select * from TABLE where Day(DateField) = (Day(GetDate())-1) and Month(DateField) = (Month(GetDate())) and Year(DateField) = (Year(getdate()))

Es concebible que esto no funcione bien el 1 de enero y el primer día de cada mes. Pero sobre la marcha es efectivo.


Para obtener el valor "actual" en SQL:

convert(date, GETDATE())

Para obtener "ayer":

DATEADD(day, -1, convert(date, GETDATE()))

Para obtener "hoy menos X días": cambie el -1 a -X.

Entonces, para todas las filas de ayer, obtienes:

select * from tablename where date >= DATEADD(day, -1, convert(date, GETDATE())) and date < convert(date, GETDATE())


Parece que faltaba la respuesta obvia. Para obtener todos los datos de una tabla (Ttable) donde la columna (DatetimeColumn) es una fecha y hora con una marca de tiempo, se puede usar la siguiente consulta:

SELECT * FROM Ttable WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday

Esto puede cambiarse fácilmente a hoy, el mes pasado, el año pasado, etc.


hoy no hay tiempo:

SELECT dateadd(day,datediff(day,0,GETDATE()),0)

obtener ayer día sin tiempo:

SELECT dateadd(day,datediff(day,1,GETDATE()),0)

consulta para todas las filas de ayer:

select * from yourTable WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0) AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)


SELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);