Tema: Semana 53
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 07/11/2017, 12:59
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Semana 53

Se puede usar el datediff con el datefirst:

Código SQL:
Ver original
  1. CREATE TABLE #fechas(
  2. fecha datetime
  3. )
  4.  
  5. INSERT INTO #fechas VALUES (getdate())
  6. INSERT INTO #fechas VALUES (dateadd(wk,1,getdate()))
  7. INSERT INTO #fechas VALUES (dateadd(wk,2,getdate()))
  8. INSERT INTO #fechas VALUES (dateadd(wk,3,getdate()))
  9. INSERT INTO #fechas VALUES (dateadd(wk,4,getdate()))
  10. INSERT INTO #fechas VALUES (dateadd(wk,5,getdate()))
  11. INSERT INTO #fechas VALUES (dateadd(wk,6,getdate()))
  12. INSERT INTO #fechas VALUES (dateadd(wk,7,getdate()))
  13. INSERT INTO #fechas VALUES (dateadd(wk,8,getdate()))
  14. INSERT INTO #fechas VALUES (dateadd(wk,9,getdate()))
  15. INSERT INTO #fechas VALUES (dateadd(wk,10,getdate()))
  16. INSERT INTO #fechas VALUES (dateadd(wk,11,getdate()))
  17. INSERT INTO #fechas VALUES (dateadd(dd,-3, getdate()))
  18.  
  19. SET datefirst 6
  20.  
  21. SELECT DATEDIFF( week,
  22.   DATEADD(DAY, -@@DATEFIRST, getdate()),
  23.   DATEADD(DAY, -@@DATEFIRST,  fecha)) AS wk, fecha FROM #fechas

wk fecha
1 2017-11-14 14:06:05.087
2 2017-11-21 14:06:05.100
3 2017-11-28 14:06:05.100
4 2017-12-05 14:06:05.100
5 2017-12-12 14:06:05.100
6 2017-12-19 14:06:05.100
7 2017-12-26 14:06:05.100
8 2018-01-02 14:06:05.100
9 2018-01-09 14:06:05.100
10 2018-01-16 14:06:05.100
11 2018-01-23 14:06:05.100
0 2017-11-07 15:13:13.320
0 2017-11-04 15:14:43.727
-1 2017-11-03 15:17:37.273


Si te fijas el dia 4 es inicio de la semana Actual(semana 0) si agregamos la fecha del domingo (3 de noviembre) es la semana -1

Referencia AQUI
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me