una ultimo obtener mes manejo insertar hora fechas fecha ejemplos datos datepart datename año acceso sql-server-2008 dateadd

sql-server-2008 - ultimo - obtener mes y año de una fecha sql



Cómo seleccionar los datos de la última semana de la fecha de hoy (3)

Cómo seleccionar los datos de la semana (más precisamente, los datos de los últimos 7 días) de la fecha actual de la manera más rápida, ya que tengo millones o filas en la tabla. Tengo una marca de tiempo de created_date en la tabla sql.

He intentado esto

SELECT Created_Date FROM Table_Name WHERE Created_Date >= DATEADD(day,-7, GETDATE())

Tengo dos preguntas:

  1. ¿Esta consulta es correcta?
  2. ¿Es esta la forma más rápida de obtener los datos de los últimos siete días de una tabla que tiene millones de filas?

  1. La consulta es correcta

2A. En la medida en que los últimos siete días tienen muchas menos filas que una tabla completa, un índice puede ayudar

2B. Si solo está interesado en Created_Date, puede intentar usar algún grupo por y contar, debería ayudar con el tamaño del conjunto de resultados


Sí, la sintaxis es precisa y debería estar bien.

Aquí está la demostración de SQL Fiddle que creé para su caso particular

create table sample2 ( id int primary key, created_date date, data varchar(10) ) insert into sample2 values (1,''2012-01-01'',''testing'');

Y aquí es cómo seleccionar los datos.

SELECT Created_Date FROM sample2 WHERE Created_Date >= DATEADD(day,-11117, GETDATE())


Seleccionar registros de los últimos 7 días.

WHERE Created_Date >= DATEADD(day, -7, GETDATE())

para seleccionar registros para la semana actual

SET DATEFIRST 1 -- Define beginning of week as Monday SELECT * FROM WHERE CreatedDate >= DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE())) AND CreatedDate < DATEADD(day, 8 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE()))

Si desea seleccionar registros para la semana pasada en lugar de los últimos 7 días

SET DATEFIRST 1 -- Define beginning of week as Monday SELECT * FROM WHERE CreatedDate >= DATEADD(day, -(DATEPART(dw, GETDATE()) + 6), CONVERT(DATE, GETDATE())) AND CreatedDate < DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE()))