Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Condicionar fechas en SQL con store procedure

Estas en el tema de Condicionar fechas en SQL con store procedure en el foro de SQL Server en Foros del Web. Hola! les comento mi problema al condicionar fechas en sql server en algunos store procedure que estoy creando. Mi proceso es el siguiente: Dentro mis ...
  #1 (permalink)  
Antiguo 21/07/2011, 08:48
 
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Pregunta Condicionar fechas en SQL con store procedure

Hola! les comento mi problema al condicionar fechas en sql server en algunos store procedure que estoy creando.

Mi proceso es el siguiente:

Dentro mis store procedure manejo un grupo de fechas, en las cuales un parametro obtiene el primer dia del mes actual y otro obtiene el ultimo dia del mes actual. Cuando es cambio de mes (un ejemplo de Junio a Julio) en alguna parte del store procedure toma el parametro del primer dia del mes al que se esta cambiando (1ero. de Julio) pero debe tomar el ultimo dia del mes anterior (30 de Junio), esto es asi porque si toma el ultimo dia del mes al que se esta cambiando (31 de Julio) no obtendria ninguna informacion.

Como condiciono esta fecha del ultimo dia del mes cuando es un cambio de mes, y que sea almacenado en el mismo parametro??

Les dejo mi codigo, esperando me puedan ayudar.

Código SQL:
Ver original
  1. -- cuando es cambio de mes tomar el ultimo dia del mes anterior
  2. DECLARE
  3. @d VARCHAR(2),
  4. @m VARCHAR(2),
  5. @a VARCHAR(4) ,
  6. @varfechult VARCHAR(50),
  7. @varfechinic VARCHAR(50),
  8. @FN VARCHAR(50),
  9. @FcF VARCHAR(50),
  10. @varFechaHoy VARCHAR(50),
  11. @varCambioMes VARCHAR (50)
  12.  
  13.  
  14. IF @varCambioMes = @varfechinic
  15.  
  16.     --//recupera el mes actual  
  17.     SET @m=MONTH(getdate()) -1
  18.     --//recupera el año actual  
  19.     SET @a=YEAR(getdate())  
  20.     --//devuelve el primer dia del mes
  21.     SET @varfechinic=@a+'0'+@m+'01'
  22.     --//Ultimo dia del mes  
  23.     SET @FN=dateadd( MONTH,1,@varfechinic) -1
  24.     --//devuelve el ultimo dia del mes
  25.     SET @varfechult=CAST(YEAR(@FN)AS VARCHAR)+'0'+ CAST(MONTH(@FN)AS VARCHAR)+CAST(DAY(@FN)AS VARCHAR)
  26.  
  27. ELSE
  28.  
  29.     --//recupera el mes actual  
  30.     SET @m=MONTH(getdate())  
  31.     --//recupera el año actual  
  32.     SET @a=YEAR(getdate())  
  33.     --//devuelve el primer dia del mes
  34.     SET @varfechinic=@a+'0'+@m+'01'
  35.     --//Ultimo dia del mes  
  36.     SET @FN=dateadd( MONTH,1,@varfechinic) -1
  37.     --//devuelve el ultimo dia del mes
  38.     SET @varfechult=CAST(YEAR(@FN)AS VARCHAR)+'0'+ CAST(MONTH(@FN)AS VARCHAR)+CAST(DAY(@FN)AS VARCHAR)

Aqui la logica que tome, es condicionar con IF ELSE el parametro de @varCambioMes sea igual a @varfechinic, cada que sea el primer dia del mes, indica que es cambio de mes y le resta -1 a month, de lo contrario si no es inicio de mes, no le resta nada a month.

Cuando lo ejecuto, me sale este error:

Server: Msg 156, Level 15, State 1, Line 27
Incorrect syntax near the keyword 'else'.

Espero haberme dado a entender para que me puedan ayudar.
Gracias!
  #2 (permalink)  
Antiguo 21/07/2011, 08:58
Avatar de vecasita  
Fecha de Ingreso: abril-2006
Mensajes: 107
Antigüedad: 18 años
Puntos: 1
Respuesta: Condicionar fechas en SQL con store procedure

No te faltan el Begin y End?
IF @varCambioMes = @varfechinic
BEGIN
--//recupera el mes actual
SET @m=month(getdate()) -1
--//recupera el año actual
SET @a=year(getdate())
--//devuelve el primer dia del mes
SET @varfechinic=@a+'0'+@m+'01'
--//Ultimo dia del mes
SET @FN=dateadd( month,1,@varfechinic) -1
--//devuelve el ultimo dia del mes
SET @varfechult=cast(year(@FN)AS varchar)+'0'+ cast(month(@FN)AS varchar)+cast(day(@FN)AS varchar)
END
else
BEGIN
--//recupera el mes actual
SET @m=month(getdate())
--//recupera el año actual
SET @a=year(getdate())
--//devuelve el primer dia del mes
SET @varfechinic=@a+'0'+@m+'01'
--//Ultimo dia del mes
SET @FN=dateadd( month,1,@varfechinic) -1
--//devuelve el ultimo dia del mes
SET @varfechult=cast(year(@FN)AS varchar)+'0'+ cast(month(@FN)AS varchar)+cast(day(@FN)AS varchar)
END
  #3 (permalink)  
Antiguo 22/07/2011, 10:56
 
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Respuesta: Condicionar fechas en SQL con store procedure

Ops!! es cierto, me faltaba begin y end, ahora ya me sale la condicion, tiene apenas algun tiempo que comenze a crear store procedure, pero he aprendido Muchas Gracias!!

Etiquetas: fechas, procedure, server, sql, store
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:57.