El primer dia del mes:
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) |
select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
El Ultimo dia del mes:
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )+1, 0)); |
select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )+1, 0));
El Lunes de la semana actual:
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) |
select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
Primer dia del año:
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) |
select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
Ultimo dia del mes anterior:
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate() ), 0)); |
select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate() ), 0));
Ultimo dia del año anterior:
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate() ), 0)) |
select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate() ), 0))
Primer lunes del mes:
SELECT DATEADD(wk, DATEDIFF(wk,0, |
select DATEADD(wk, DATEDIFF(wk,0,
dateadd(dd,6-datepart(DAY,getdate()),getdate())), 0); |
dateadd(dd,6-datepart(day,getdate()),getdate())), 0);
Esta es la forma de obtener el primer día de la semana dado el año y el número de semana.
DECLARE @Year varchar(4)
SET @Year = ‘2012’
DECLARE @Week int
SET @Week = 23
DECLARE @FirstDayOfYear datetime
SET @FirstDayOfYear = CAST( (CAST(@Year as varchar(4)) +’-01-01′) as DateTime) ;
SELECT DATEADD(week,@week,@firstDayOfYear)
excelente este aporte, realmente me sirvió demasiado muchas gracias
Excelente, gracias.
Excelente. Sin rollos, sin verbo, solamente soluciones. Sigue así.
Esta es la forma de obtener el primer día de la semana dado el año y el número de semana. usando las funciones
obtiene el primer dia de la semana 23 del año 2012
DECLARE @Year date
SET @Year = ‘2012-8-22′
DECLARE @Week int
SET @Week = 23
DECLARE @FirstDayOfYear date
SET @FirstDayOfYear = DATEADD(yy, DATEDIFF(yy,0,@Year), 0);
SELECT DATEADD(week,@week,@firstDayOfYear)
para obtener el numero e la semana estan estas 4 formas
SELECT DATEPART( WEEK , GETDATE())
SELECT DATEPART( WK , ’08/21/2012′)
SELECT DATEPART( WW , ’08/21/2012’)
SELECT DATEPART( WW , ‘2012-12-29′)
para saber que semana es, recordando que las semanas numeradas comienzan con lunes
select DATEADD(DAY , (31*7)-6 ,’2012-01-01′), DATEADD(DAY , (31*7) ,’2012-01-01’)
aqui la funcion para cualquier peroido que se quiera conocer
Create FUNCTION fn_EnQuePeriodoEstamos
(
@Fecha as DATE
,@PeriodoEnDias as INT
)
RETURNS INT
AS
BEGIN
DECLARE @Resultado INT
DECLARE @PrimerDiaDelAnio DATE
–DECLARE @Periodos INT
DECLARE @PeriodosEncontrados INT
DECLARE @DiasTranscurridos INT
DECLARE @DiasSobrantes INT
–calculando cuantos periodos dados tiene el año
–SET @Periodos = 365 / @PeriodoEnDias
–calculo el primer dia del año entregado
SET @PrimerDiaDelAnio = DATEADD(yy, DATEDIFF(yy,0,@Fecha), 0)
–calculo cuantos dias han pasado
SET @DiasTranscurridos = datediff(day, @PrimerDiaDelAnio ,@Fecha)
–calculo cuantos periodos caben en los dias transcurridos
SET @PeriodosEncontrados = @DiasTranscurridos / @PeriodoEnDias
–obtengo el modulo si hay mas de 1 brinca el periodo
SET @DiasSobrantes = @DiasTranscurridos % @PeriodoEnDias
IF (@DiasSobrantes > 0)
SET @PeriodosEncontrados = @PeriodosEncontrados + 1
SET @Resultado = @PeriodosEncontrados
RETURN @Resultado
END
GO
/*
select dbo.fn_EnQuePeriodoEstamos(getdate(),31)
select dbo.fn_EnQuePeriodoEstamos(‘2012-12-30’,7) –semana
select dbo.fn_EnQuePeriodoEstamos(‘2012-12-30’,14) –catorcena
select dbo.fn_EnQuePeriodoEstamos(‘2012-12-30’,15) –quincena
select dbo.fn_EnQuePeriodoEstamos(‘2012-12-30’,31) –mes
*/
Casi ninguna de tus funciones funciona bien, no son exactas prueba otros años y fechas y verás.
Quién me podría ayudar a Conseguir la siguiente consulta:
Obtener los nombres de la tabla Datos que se ingresaron en la fecha ‘X’ a la fecha ‘Y’, pero hay que tener en cuenta que en esa tabla Datos solo existe 1 atributo de Fecha que es de tipo datetime, no hay 2 que digan fecha1 y fecha2… ojo!!! lo necesito en storeprocedure… Les agradecería mucho… A ver quién me ayuda… Muchas bendiciones a todos
Hola quisiera saber si me pueden ayudar a conocer el ultimo dia de la semana sabiendo la semana y el año…
Alguien me puede ayudar…
Quiero obtener solo el año del mes anterior, esto es para no tener problemas en el mes de enero…
Desde ya, gracias por sus respuestas!!!
Estimados:
Necesito obtener el ultimo día hábil del mes, por el ejemplo el ultimo día hábil de agosto 2014 .
Muchas gracias.
El ultimo dia habil es un concepto un poco profundo. El ultimo dia habil es el ultimo dia en la ultima del mes en la cual para el pais donde estas no sea feriado y para la empresa donde se usa tu consulta no sea asueto.
Y esa parte es la que es un poco dura de hacer. Porque no haces algo que encuentre el ultimo dia del mes y te vas restando hasta que encuentres un dia que no sea domingo ni feriado. Los dias feriados y/o asuetos guarda en una tabla y consulta en tu bucle.
hola un saludo alguien puede ayudarme con este pequeño problema como puedo obtener con el numero de semana el rango de fecha por ejemplo la semana un y me de el resultado de por decir algo el 01-01-2014 al 07-01-2014 nose si me supe explicar de antemano muchas gracias…
Si al primer dia del año le sumas 7 por el numero que tenes, deberias poder encontrar el primer dia de la semana. A ese valor le sumas 1 semana y vas a tener la fecha del fin de la semana.
Hola, quisiera saber como puedo hacer para cambiar el idioma de los meses del año. Tengo
TO_VARCHAR(A.»DocDate»,’DD MONTH YYYY’) «FechaDoc»,
Quiero cambiar los meses del año a español con CASE.