¿Cómo va a encontrar el último domingo de un mes en sql 2000?Buscar el último domingo
Respuesta
SELECT
DATEADD(day,DATEDIFF(day,'19000107',DATEADD(month,DATEDIFF(MONTH,0,GETDATE() /*YourValuehere*/),30))/7*7,'19000107')
edición: A, final, la respuesta correcta de trabajo de mi colega.
vaca Santo, esto es feo, pero aquí va:
DECLARE @dtDate DATETIME
SET @dtDate = '2009-11-05'
SELECT DATEADD(dd, -1*(DATEPART(dw, DateAdd(day, -1, DateAdd(month, DateDiff(month, 0, @dtDate)+1, 0)))-1),
DateAdd(day, -1, DateAdd(month, DateDiff(month, 0, @dtDate)+1, 0)))
Primero construyó una tabla de conteo. http://www.sqlservercentral.com/articles/T-SQL/62867/ a continuación, obtener lo que quiere ..
http://www.sqlservercentral.com/Forums/Topic515226-1291-1.aspx
DECLARE @DateStart DATETIME,
@DateEnd DATETIME
SELECT @DateStart = '20080131',
@DateEnd = '20101201'
SELECT DATEADD(wk,DATEDIFF(wk,6,DATEADD(mm,DATEDIFF(mm,-1,DATEADD(mm,t.N-1,@DateStart)),-1)),6)
FROM dbo.Tally t
WHERE t.N <= DATEDIFF(mm,@DateStart,@DateEnd)
DECLARE @LastDateOfMonth smalldatetime
SELECT @LastDateOfMonth = DATEADD(month, DATEDIFF(month, -1, GETDATE()), 0) -1
Select DATEADD(dd,-(CASE WHEN DATEPART(weekday,@LastDateOfMonth) = 1 THEN 0 ELSE DATEPART(weekday,@LastDateOfMonth) - 1 END),@LastDateOfMonth)
Un enfoque alternativo, tomado de la práctica de almacenamiento de datos. Cree una tabla de dimensión de fecha y precarguela durante 10 años, más o menos.
TABLE dimDate (DateKey, FullDate, Day, Month, Year, DayOfWeek,
DayInEpoch, MonthName, LastDayInMonthIndicator, many more..)
La forma más fácil de rellenar el dimDate
es pasar una tarde con Excel y luego importar a DB desde allí. Una mesa mediocre de dimDate
tiene más de 50 columnas, cualquier cosa que siempre quisiste saber sobre una fecha.
Con esto en su lugar, la cuestión se convierte en algo así como:
SELECT max(FullDate)
FROM dimDate
WHERE DayOfWeek = 'Sunday'
AND Month = 11
AND Year = 2009;
En esencia, todas las consultas relacionadas con la fecha se vuelven más simples.
select next_day(last_day(sysdate)-7, 'Sunday') from dual
no SQL 2000 como pregunta original declarado – DasDave
select dateadd(day,1-datepart(dw, getdate()), getdate())
próximo domingo en SQL, que sin tener en cuenta el día es día de la semana: devuelve 2011-01-02 23: 59: 59.000 el 22-Dic-2010:
select DateADD(ss, -1, DATEADD(week, DATEDIFF(week, 0, getdate()), 14))
I Algunas de estas soluciones son difíciles de entender, así que aquí está mi versión con variables para explicar los pasos.
ALTER FUNCTION dbo.fn_LastSundayInMonth
(
@StartDate DATETIME
,@RequiredDayOfWeek INT /* 1= Sunday */
)
RETURNS DATETIME
AS
/*
A detailed step by step way to get the answer...
SELECT dbo.fn_LastSundayInMonth(getdate()-31,1)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,2)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,3)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,4)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,5)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,6)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,7)
*/
BEGIN
DECLARE @MonthsSince1900 INTEGER
DECLARE @NextMonth INTEGER
DECLARE @DaysToSubtract INTEGER
DECLARE @FirstDayOfNextMonth DATETIME
DECLARE @LastDayOfMonthDayOfWeek INTEGER
DECLARE @LastDayOfMonth DATETIME
DECLARE @ReturnValue DATETIME
SET @MonthsSince1900=DateDiff(month, 0, @StartDate)
SET @[email protected]+1
SET @FirstDayOfNextMonth = DateAdd(month,@NextMonth, 0)
SET @LastDayOfMonth = DateAdd(day, -1, @FirstDayOfNextMonth)
SET @ReturnValue = @LastDayOfMonth
WHILE DATEPART(dw, @ReturnValue) <> @RequiredDayOfWeek
BEGIN
SET @ReturnValue = DATEADD(DAY,-1, @ReturnValue)
END
RETURN @ReturnValue
END
- 1. Buscar algoritmo de fecha de domingo anterior
- 2. Buscar primero y último día del último trimestre en ORACLE
- 3. usando PARSENAME para buscar el último elemento en una lista
- 4. ¿Cómo llegar el domingo pasado y el próximo domingo en Java?
- 5. SQL: cómo obtener el domingo de la semana actual
- 6. Encuentra la fecha de último domingo de octubre en ASP.NET C#
- 7. Obtener el primero o el último viernes en un mes
- 8. Buscar último índice de por Regex en Java
- 9. semana (AHORA()) comienza el domingo Necesito comenzar el lunes
- 10. Calcule el último día de la semana de un mes
- 11. PHP: ¿Cómo obtener el domingo anterior de una fecha específica en el pasado ...?
- 12. Obtenga el primer domingo del próximo mes con T-SQL
- 13. Cómo programar para ejecutar el primer domingo de cada mes
- 14. ¿Cómo obtener la fecha del próximo domingo?
- 15. mysql semana de lunes a domingo
- 16. ¿Cómo comprobar si es sábado/domingo?
- 17. Cómo buscar el último hash de commit de git desde un script de compilación de ant
- 18. Buscar el primer y último día del mes calendario anterior en SQL Server Reporting Services (VB.Net)
- 19. JavaScript RegExp: ¿Puedo obtener el último índice coincidente o buscar hacia atrás/RightToLeft?
- 20. Cómo obtener el último registro
- 21. Java - Cómo calcular el primero y el último día de cada semana
- 22. ¿Cómo obtener el último día de la semana pasada en sql?
- 23. Averigüe el control con el último foco
- 24. PHP: ¿Cómo recibir el domingo y el sábado una entrada de fecha?
- 25. Obtener el lunes y el domingo para una cierta DateTime en C#
- 26. CSS3 acceder al último elemento
- 27. Cadena MySQL último índice de
- 28. Cómo comprobar si hoy es domingo con Java Calendar
- 29. Buscar la fecha de último acceso de un archivo en Cocoa
- 30. Buscar el enlace simbólico
falla para la mayoría de las instalaciones no inglés de Estados Unidos ... – gbn