2012-06-19 16 views
6

Encontré un par de ejemplos en línea pero no entiendo muy bien cómo funciona. por ejemplo,Buscar algoritmo de fecha de domingo anterior

 SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 

Ni siquiera estoy seguro de que haga lo que quiero.

Lo que necesito es que, cuando se ejecuta la consulta, puede SELECT * from xTable WHERE xDate tiene entre dos fechas. El último domingo y el próximo domingo (semana actual). ¿Qué podría usar para encontrarlo automáticamente? Y por favor explica porque soy nuevo en SQL.

+4

No entiendo por qué alguien podría votar por el cierre como _ "no es una pregunta real" _. Está claro lo que OP quiere saber: cómo obtener los registros de la semana actual. Pero la pregunta es, ¿has probado la consulta y arrojó un resultado incorrecto? –

+0

En realidad, devuelve una fecha en la que no puedo encontrar el modo de utilizar esta consulta para obtener mi resultado. – phadaphunk

Respuesta

4

miré más profundo para tratar de entender esta consulta

SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 

y lo utilizó para retreive el Lunes anterior. Ahora puedo simplemente DATEADD 6 días más para obtener una semana completa.

La solución utilicé:

 Set @Monday = DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 
     Set @Sunday = DATEADD(dd, 06, @Monday) 

problema resuelto.

+0

Si no tiene fechas futuras en su tabla, esta es la forma más eficiente: 'SELECT * from xTable WHERE xDate> = DATEADD (ww, DATEDIFF (ww, 0, GETDATE()), 0)'. Si también desea restringir las fechas futuras (más de una semana): 'SELECT * from xTable WHERE xDate> = DATEADD (ww, DATEDIFF (ww, 0, GETDATE()), 0) AND xDate

+0

Es un informe que se olvidó de mencionar. Entonces, si alguien quiere volver a imprimir un informe de hace dos meses, habrá algunas fechas futuras que temerán. Pero lo probé y funciona perfectamente si no es por el problema de las fechas futuras. Gracias:) – phadaphunk

Cuestiones relacionadas