Foros del Web » Programando para Internet » ASP Clásico »

Ayuda con Intervalo de fechas

Estas en el tema de Ayuda con Intervalo de fechas en el foro de ASP Clásico en Foros del Web. Hola veréis lo que yo quiero hacer es que el usuario introduzca una fecha y dependiendo si dicha fecha está en unos intervalos preestablecidos pues ...
  #1 (permalink)  
Antiguo 17/07/2006, 04:44
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Pregunta Ayuda con Intervalo de fechas

Hola veréis lo que yo quiero hacer es que el usuario introduzca una fecha y dependiendo si dicha fecha está en unos intervalos preestablecidos pues hacer una cosa u otra, me explico. La cosa sería si el usuario mete la fecha 06/11/2006 comprobar si está en el intervalo 01/11/2006 a 06/02/2007, bueno hasta ahí fácil...pero lo que me complica es que yo quiero que esa fecha sea independiente a cualquier año, por ejemplo si pone 08/11/2009 que me trabaje con el intervalo de antes pero independiente al año, es decir q sirva para cualquier año. Lo que yo he hecho es despreciar el año de la fecha así if cdate("06/11")>=cdate(left(01/11/2006),5)) AND cdate("06/11")>=cdate(left("06/12/2007"),5)), que es lo q pasa? q al no tener cuenta el año...con determinadas fechas esa condición es falsa cuando no tiene q serlo, por ejemplo en la comparación de antes 06/11 es menor que 06/12 si no tenemos en cuanta el año, cuando 06/11 que yo me refería es del año 2006 y el intervalo superior termina en 2007.

Si me podéis ofrecer una ayuda estaría muy muy agradecido. Entonces la cosa es que esos intervalos tienen que ser independientes al año, es decir que sirvan para cualquier fecha.

Un saludo y gracias de antemano.
  #2 (permalink)  
Antiguo 17/07/2006, 09:14
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 23 años, 1 mes
Puntos: 39
No se si te aya entendido pero tu al solo comparar dia y mes no te da el resultado esperado, espero que sea el mismo problema que yo tube tambien validando solo mes y año pero te lo doy con dia y mes ok.

bueno lo que yo hice fue lo siguiente ojala y sea lo que buscas repito jiji.

Áqui atrapo la fecha a validar mes_var y tomo y le saco el mes y le saco el año y tu deberas sacar mes y dia.

day_var = Day(Trim(Request("mes_var")))
mes_var = Month(Trim(Request("mes_var")))
ano_var = Year(Trim(Request("mes_var")))

'Ya sabes abres tu conexion
'y hago un recorset
´saco tres valores dia, mes, año que son los que voy a comparar con lo que obtube del formulario

dia = Day(rs("fecha_base"))
mes = Month(rs("fecha_base"))
ano = Year(rs("fecha_base"))

'Aqui le digo que me muestre todos los registros que comprendan del dia_var al mes_var solicitados por el formulario

If mes >= mes_var And ano <= ano_var Then
lo que pasara si sale cierto

Else

Lo que pasa si es falso.

Espero que te sirca o te de una idea nos vemos.


SALUDOS:::::::::
  #3 (permalink)  
Antiguo 17/07/2006, 13:44
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Hola gracias por tu respuesta...pero ese caso ya lo había pensado y tampoco me funciona. Tendré que darle más vueltas al asunto jeje, de todas maneras muchas gracias
  #4 (permalink)  
Antiguo 17/07/2006, 15:33
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
fecha_formulario = cdate(request("fecha_formulario"))

'tus fechas
'aunque no me suena no tomar encuenta el año....
fecha_inicio = "01/11/2006"
fecha_fin = "06/12/2007"

if Month(fecha_formulario) >= Month(fecha_inicio) and Day(fecha_formulario) >= Day(fecha_inicio) then

if Month(fecha_formulario) <= Month(fecha_fin) and Day(fecha_formulario) <= Day(fecha_fin) then

aqui creo que cumple ambas cosas es mayo que la inicia y menor que la final (mes y dia sin importar el año) pero no le encuentro lado

else

si no hago otra cosa

end if
end if




suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #5 (permalink)  
Antiguo 17/07/2006, 16:26
Avatar de edu007ar  
Fecha de Ingreso: septiembre-2003
Ubicación: Buenos Aires
Mensajes: 118
Antigüedad: 20 años, 8 meses
Puntos: 0
creo que podria funcionar si comparas los dd/mm dados vuelta y lo transformas en numero (MMDD), ej.

fechaformulario=23/04 quedaria 423
fechainicio=17/02 quedaria 217
fechafin=02/08 quedaria 802

y ahora haces:
if fechaformulario>=fechainicio and fechaformulario<=fechafin then
se cumple
end if

lo que habria que probar es como hacerlo si la fechainicio es tirando a fin de año y la fechafin es a principio del proximo año.... supongo que ahi se complicaria un poco...

espero te sirva..
  #6 (permalink)  
Antiguo 17/07/2006, 20:42
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Otra forma es preguntar por cada parte de la fecha:


Select * from Tabla Where (Month(@Fecha) >= Month(Fecha) and Month(@Fecha) < Month(Fecha)) and (Year(@Fecha) >= Year(Fecha) and Year(@Fecha) < Year(Fecha))

Saludos
  #7 (permalink)  
Antiguo 18/07/2006, 06:15
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Muchas gracias por vuestras propuestas, que colaborativos sois en este foro . Me gusta la idea de edu007ar (la de juanraperez y Myakire ya las había probado y no me funcionan), sabeis..el problema grave es que tengo una fecha d inincio y una fecha fin de dos temporadas, es para un sistema de reserva, digamos que la temporada es verano e invierno..


Pero creo q ya acabo de encontrar la solución, en lugar de tener 2 intervalos...creo q lo puedo solucionar teniendo 3...me explico, si tengo dos temporadas invierno y verano, me parece que sería adecuado un primer intervalo por ejemplo de enero a juni, el segundo que corresponde con la temporada de verano de junio a octubre y el último que sería la misma temporada que el primero, es decir de invierno pues de octubre a diciembre...esa es la manera que se me ocurre para poder lograr la independecia del año. ¿Qué os parece?

Un saludo

C
  #8 (permalink)  
Antiguo 18/07/2006, 08:14
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Cita:
Iniciado por crash
la de juanraperez y Myakire ya las había probado y no me funcionan
por cultura, podrias comentarme porque esactamente no te funcionan, porque la de Myakire suena logica no?

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #9 (permalink)  
Antiguo 18/07/2006, 14:00
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Pues pq si comparo el día...por ejemplo suponiendo que la fecha de fin de temporada es 15/06 y pongo una fecha por ejemplo 25/02, esta fecha estaría dentro de la temporada pero basandome en tu comparación no lo estaría pq aunque 2 es menor que 6, 25 no es menor que 15 por lo que se rompe la condición.
  #10 (permalink)  
Antiguo 18/07/2006, 21:14
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
mmmmm, bueno, rapidamente hice esto a manera de ejemplo:

Cita:
declare @MESTempIni As char(2)
declare @MESTempFin As char(2)
declare @DIATempIni As char(2)
declare @DIATempFin As char(2)
declare @Fecha As SmallDateTime
SET @DIATempIni = '20'
SET @MESTempIni = '12'
SET @DIATempFin = '21'
SET @MESTempFin = '04'
SET @Fecha = '22/03/2006'
print CAST(@DIATempIni+'/'+@MESTempIni+'/'+CAST(YEAR(@Fecha)-1 as VARCHAR) as SMALLDATETIME)
print CAST(@DIATempFin+'/'+@MESTempFin+'/'+CAST(YEAR(@Fecha) as VARCHAR) as SMALLDATETIME)
SELECT 'Esta dentro del intervalo' WHERE @Fecha BETWEEN CAST(@DIATempIni+'/'+@MESTempIni+'/'+CAST(YEAR(@Fecha)-1 as VARCHAR) as SMALLDATETIME) AND
CAST(@DIATempFin+'/'+@MESTempFin+'/'+CAST(YEAR(@Fecha) as VARCHAR) as SMALLDATETIME)
aunque mientras lo estaba probando, pense que efectivamente no sería tan sencillo .... aunque funciona para temporadas que inicen en el año pasado y terminen en el actual, no funciona para las que inician en este año por el -1 que le puse.

Cosa de seguir probando ... mañana probaré alguna forma con solo SQL, de que se debe poder, pues .... creo ... se debe poder, jejeje

Saludos
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 16:24.