¿Cómo obtener la última fecha de la última semana en sql? Me refiero a la última fecha de domingo con la consulta?¿Cómo obtener el último día de la semana pasada en sql?
Respuesta
Independientemente del ajuste DATEFIRST real, el último domingo se pudo encontrar la siguiente manera:
SELECT DATEADD(day,
-1 - (DATEPART(weekday, GETDATE()) + @@DATEFIRST - 2) % 7,
GETDATE()
) AS LastSunday
Reemplazar GETDATE()
con un parámetro @date
para obtener el último domingo antes de una fecha en particular.
SET @EndDate = GETDATE()-DatePart(dw, GETDATE());
Esto no devuelve la fecha correcta. Ejecutarlo ahora devuelve 4/30, que es el último sábado. – IAmTimCorey
Aquí está un gran artículo sobre cómo hacer esto:
http://www.objectreference.net/post/SQL-Find-last-week-date-range.aspx
Usted desea utilizar la variable @StartOfPrevWeek.
domingo pasado (¿Cuál es el fin de "la semana pasada")
SELECT DATEADD(wk, DATEDIFF(wk, 6, CURRENT_TIMESTAMP), 6) AS LAST_SUNDAY
esta semana (Suponiendo LD Semana Formato)
SELECT DATEADD(wk, DATEDIFF(wk, 7, CURRENT_TIMESTAMP), 7) AS START_OF_WEEK
SELECT DATEADD(wk, DATEDIFF(wk, 6, CURRENT_TIMESTAMP), 6 + 7) AS END_OF_WEEK
Resultados
START_OF_WEEK
-----------------------
2011-05-02 00:00:00.000
END_OF_WEEK
-----------------------
2011-05-08 00:00:00.000
ejemplos para explicar el vudú (usar esto para hacer cambios en las SQL para su partir de la semana que desee y Semana que termina el día de la semana los) días
- Los ejemplos a continuación localizar de la semana dentro de la semana actual (domingo a sábado)
- Si el END_OF_WEEK real es la próxima semana de domingo a sábado, entonces necesita +7 al valor de esta semana. (. Vea el ejemplo END_OF_WEEK anterior)
SQL A continuación
SELECT DATEADD(wk, DATEDIFF(wk, -2, CURRENT_TIMESTAMP), -2) AS DAY_OF_WEEK /* Saturday */
SELECT DATEADD(wk, DATEDIFF(wk, -1, CURRENT_TIMESTAMP), -1) AS DAY_OF_WEEK /* Sunday */
SELECT DATEADD(wk, DATEDIFF(wk, 0, CURRENT_TIMESTAMP), 0) AS DAY_OF_WEEK /* Monday */
SELECT DATEADD(wk, DATEDIFF(wk, 1, CURRENT_TIMESTAMP), 1) AS DAY_OF_WEEK /* Tuesday */
SELECT DATEADD(wk, DATEDIFF(wk, 2, CURRENT_TIMESTAMP), 2) AS DAY_OF_WEEK /* Wednesday */
SELECT DATEADD(wk, DATEDIFF(wk, 3, CURRENT_TIMESTAMP), 3) AS DAY_OF_WEEK /* Thursday */
SELECT DATEADD(wk, DATEDIFF(wk, 4, CURRENT_TIMESTAMP), 4) AS DAY_OF_WEEK /* Friday */
SELECT DATEADD(wk, DATEDIFF(wk, 5, CURRENT_TIMESTAMP), 5) AS DAY_OF_WEEK /* Saturday */
SELECT DATEADD(wk, DATEDIFF(wk, 6, CURRENT_TIMESTAMP), 6) AS DAY_OF_WEEK /* Sunday */
SELECT DATEADD(wk, DATEDIFF(wk, 7, CURRENT_TIMESTAMP), 7) AS DAY_OF_WEEK /* Monday */
SELECT DATEADD(wk, DATEDIFF(wk, 8, CURRENT_TIMESTAMP), 8) AS DAY_OF_WEEK /* Tuesday */
SELECT DATEADD(wk, DATEDIFF(wk, 9, CURRENT_TIMESTAMP), 9) AS DAY_OF_WEEK /* Wednesday */
SELECT DATEADD(wk, DATEDIFF(wk, 10, CURRENT_TIMESTAMP), 10) AS DAY_OF_WEEK /* Thursday */
SELECT DATEADD(wk, DATEDIFF(wk, 11, CURRENT_TIMESTAMP), 11) AS DAY_OF_WEEK /* Friday */
SELECT DATEADD(wk, DATEDIFF(wk, 12, CURRENT_TIMESTAMP), 12) AS DAY_OF_WEEK /* Saturday */
etc...
El SQL es más sencillo con una tabla de calendario adecuada. Sin vudú.
select max(cal_date) end_of_last_week
from calendar
where (cal_date < current_date and day_of_week = 'Sun');
end_of_last_week
--
2011-05-01
SELECT (DATEADD(DAY, ((DATEPART(dw, @Date) - 1) * -1), @Date))
DECLARE @LastSunday DATETIME
-- This will get the previous Sunday with time as 23:59:59
SELECT @LastSunday = Dateadd(SECOND, -1, Dateadd(WK, Datediff(WK, 6,
CURRENT_TIMESTAMP)
, 7))
SELECT @LastSunday
-- This gets the monday prior to it and time of 00:00:00
SELECT Dateadd(SECOND, 1, Dateadd(DAY, -7, @LastSunday))
-- This will make you time spans between eg, Monday 16/07/2012 00:00:00 through to Sunday 22/07/2012 23:59:59
-- Then use them in your WHERE clause like this
-- SELECT X,Y,Z From SomeTable
-- WHERE DateField BETWEEN @PreviousMondayToLastSunday AND @LastSunday
Esto obtendrá la siguiente y preciosa viernes de una fecha y hora determinada
DECLARE @PREVIOUS int, @dtmStart datetime,@dtmEnd datetime, @NEXT int;
SET @dtmStart = '12/10/2013';
SET @dtmEnd = '12/11/2013';
select @PREVIOUS = datepart(dw,@dtmStart)
WHILE @PREVIOUS <> 6
BEGIN
SET @dtmStart = DATEADD(day , -1 ,@dtmStart)
SET @PREVIOUS = datepart(dw,@dtmStart)
CONTINUE
END
select @dtmStart
SELECT @NEXT = DATEPART(dw, @dtmEnd)
WHILE @NEXT <> 6
BEGIN
SET @dtmEnd = DATEADD(day , 1 ,@dtmEnd)
SET @NEXT = datepart(dw,@dtmEnd)
CONTINUE
END
select @dtmEnd
Para obtener el Domingo anterior o actual, si hoy es domingo, intente esto
DATEADD(day,- (DATEPART(dw,getdate()) + @@DATEFIRST -1) % 7, getdate())
Aquí está el código para obtener la fecha del último Saturd sí. Este método es independiente de la configuración de la base de datos.
declare @lastSaturday date,
@today date,
@todayName varchar(20);
select @todayName = datename(weekday, getdate()), @today = getdate();
select
case @todayName
when 'Saturday' then @today
when 'Sunday' then dateadd(day,-1,@today)
when 'Monday' then dateadd(day,-2,@today)
when 'Tuesday' then dateadd(day,-3,@today)
when 'Wednesday' then dateadd(day,-4,@today)
when 'Thursday' then dateadd(day,-5,@today)
when 'Friday' then dateadd(day,-6,@today)
end as LastSaturday;
- 1. Obtener el día de la semana en SQL 2005/2008
- 2. cómo obtener la fecha de la semana pasada (martes o cualquier otro día) en php?
- 3. Calcule el último día de la semana de un mes
- 4. cómo conseguir el primer día y el último día de la semana y el año número
- 5. SQL: cómo obtener el domingo de la semana actual
- 6. la semana pasada, esta semana (php)
- 7. Cómo obtener el valor entero del día de la semana
- 8. Cómo obtener el último día del mes
- 9. Obtenga el primer día de la semana en SQL Server
- 10. pl sql cómo obtener el día de la semana para la fecha de oráculo db
- 11. ¿Cómo obtener el día de la semana del número del día en Javascript?
- 12. Fecha de entrega, obtener el día de la semana - SYSTEMTIME
- 13. Obteniendo el día de la semana localizado
- 14. Cómo obtener el día hábil anterior en una semana con el día hábil actual utilizando el servidor sql
- 15. obtener enésimo día de la semana del mes en C#
- 16. Obtener el último día del mes?
- 17. PHP - obtenga el número de la semana pasada en el año
- 18. ¿Cómo calculo el último día del mes en SQL?
- 19. configuración día de la semana en javascript
- 20. Mostrar solo publicaciones creadas la semana pasada
- 21. ¿Cómo puedo obtener el último día del mes en C#?
- 22. Java - Cómo calcular el primero y el último día de cada semana
- 23. Obtener el último día del mes anterior en Oracle Función
- 24. ¿Cuál es la diferencia entre 'Día' y 'Día de la semana' en el lanzamiento de StartCalendarInterval?
- 25. Consulta SQL para obtener el último precio
- 26. Cómo obtener el nombre abreviado de día en la semana (Mo/Tu/We/Th ...)
- 27. Encontrar Primer día de la semana a través de php
- 28. Devolver el último día de cada mes con SQL
- 29. Fecha de día de la semana en el maravilloso
- 30. Obteniendo el primer día de la semana en MySql utilizando la semana n. °
Wow, pensé que era tan inteligente cuando se me ocurrió ese truco de módulo la semana pasada para encontrar el próximo viernes después de una fecha determinada. Te saludo, señor. Para los geeks no matemáticos, Andriy está devolviendo el número de días desde el domingo usando un resto. Estoy dando un gran aprobado! –