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 utilizando SQL Server 2005.Instrucción SQL para seleccionar todas las filas del día anterior
Respuesta
conseguir hoy en día no hay tiempo:
SELECT dateadd(day,datediff(day,0,GETDATE()),0)
conseguir yestersday ningún momento:
SELECT dateadd(day,datediff(day,1,GETDATE()),0)
consulta para todas las filas de sólo ayer:
select
*
from yourTable
WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0)
AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)
no puede probarlo ahora mismo, pero:
select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)
Para obtener el valor de "hoy" en SQL:
convert(date, GETDATE())
llegar "ayer" :
DATEADD(day, -1, convert(date, GETDATE()))
Para obtener "hoy menos X días": cambie el -1 a -X.
Así que para todas las filas de ayer, se obtiene:
select * from tablename
where date >= DATEADD(day, -1, convert(date, GETDATE()))
and date < convert(date, GETDATE())
"fecha" Tipo de datos no lo existe en SQL Server 2005. Cuando uso de fecha y hora en lugar de las estancias de valor de tiempo y el cálculo sucede no de 0 a.m. a 12 p.m., sino a partir del momento en que ejecuta la consulta – rudimenter
Mi error. No vi que estuvieras lidiando con SQL Server 2005. De hecho, mi código funciona solo para SQL Server 2008. – Konamiman
Siempre pensé que DATEADD (día, ....) era un desperdicio, solo agregue o reste la cantidad de días contra la fecha: _SELECCIONE GETDATE() - 1_ –
Es un hilo muy viejo, pero esta es 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
SELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);
Otra forma de decir que "Yesterday" ...
Select * from TABLE
where Day(DateField) = (Day(GetDate())-1)
and Month(DateField) = (Month(GetDate()))
and Year(DateField) = (Year(getdate()))
Esto posiblemente no va a funcionar bien el 1 de enero, así como el primer día de cada mes. Pero sobre la marcha es efectivo.
Parece que la respuesta obvia faltaba. Para obtener todos los datos de una tabla (TTable), donde la columna (DatetimeColumn) es una fecha y hora con una marca de tiempo de la siguiente consulta se puede utilizar:
SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday
Esto puede ser fácilmente cambiado a día de hoy, el mes pasado, el año pasado, etc.
esto debe hacerlo:
WHERE `date` = CURDATE() - INTERVAL 1 DAY
En SQL Server lo hacen así:
where cast(columnName as date) = cast(getdate() -1 as date)
Debe lanzar 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, a continuación, usted 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)
- 1. Todas las horas del día
- 2. seleccionar siguiente/anterior 10 filas en mysql
- 3. SQL borrar todas las filas excepto algunos
- 4. MySQL: seleccionar filas condicionalmente siguiente y anterior
- 5. SQL Seleccionar instrucción para calcular una columna promedio en ejecución
- 6. Seleccione el primer día del mes anterior en (DB2) SQL
- 7. TSQL SELECCIONAR registros de la fecha anterior
- 8. Jquery/Ajax cuadro de diálogo donde seleccionar entre todas las filas de una tabla sql
- 9. Seleccionar las filas superiores e inferiores
- 10. seleccionar las filas afectadas por una actualización
- 11. Seleccionar datos de SQL DB por día
- 12. Sintaxis R para seleccionar todas menos dos primeras filas
- 13. Borrar todas las filas en la tabla
- 14. Obtener Día anterior
- 15. primer día del mes anterior en javascript
- 16. InnoDB SELECT ... PARA la instrucción UPDATE que bloquea todas las filas en una tabla
- 17. Prefijo de todas las columnas de instrucción T-SQL
- 18. actualizar una columna para todas las filas
- 19. ¿Cómo seleccionar varias filas SQL codificadas?
- 20. SQL: Encuentre filas donde Column contiene todas las palabras dadas
- 21. Buscar anterior día natural pitón
- 22. Obtenga las fechas del primer y último día del mes anterior en C#
- 23. instrucción SQL UPDATE para cambiar dos valores en dos filas
- 24. ¿Cómo seleccionar todas las filas del refcursor devuelto por la función PL/pgSQL?
- 25. devolver todas las filas duplicadas
- 26. Obtener todas las filas creadas hoy
- 27. sqlalchemy, seleccione todas las filas
- 28. combinación izquierda no devolver todas las filas
- 29. Cómo vaciar todas las filas de todas las tablas en mysql (en sql)
- 30. Javascript a fecha del último día del mes anterior
SI TAMBIÉN NECESITO TIEMPO? – Neo
@ashuthinks, tu comentario no tiene sentido para mí. La pregunta original pregunta cómo obtener filas del día anterior. Para hacerlo, debe poder obtener la fecha de hoy solamente (sin tiempo) y la fecha de ayer solamente (sin tiempo). Utiliza estas fechas (intemporales) en la cláusula 'WHERE'. Sin embargo, el 'SELECT *' devolverá cualquier fecha con sus tiempos originales. –
datediff da "Error de conteo de parámetros incorrecto". y http://stackoverflow.com/a/18926156/3007408 dice datediff puede usar solo 2 parámetros. ¿¿alguna solución?? – Sp0T