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

Un par de preguntas relacionadas con las fechas...

Estas en el tema de Un par de preguntas relacionadas con las fechas... en el foro de ASP Clásico en Foros del Web. Hola a todos, y gracias de antemano por contestar (los que lo hagáis...): Quisiera hacer dos cosas relacionadas con campos de tipo fecha, y que ...
  #1 (permalink)  
Antiguo 02/01/2009, 22:33
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 18 años, 2 meses
Puntos: 0
Un par de preguntas relacionadas con las fechas...

Hola a todos, y gracias de antemano por contestar (los que lo hagáis...):

Quisiera hacer dos cosas relacionadas con campos de tipo fecha, y que no he conseguido realizar tras varias pruebas e intentos.

En primer lugar, en una tabla en la que tengo muchos registros, quisiera que sólo aparecieran en una página los registros cuya fecha es la actual. Lo he hecho de la siguiente manera:

sql = " SELECT * FROM noticias WHERE fecha = Date() "

Pero, lo que quisiera también es que, si no hubiera noticias de la fecha actual (Date), que me mostrara las del día anterior (Date -1), y no ha habido manera de hacerlo funcionar.

¿Alguna idea? Si queréis os posteo algunos de los intentos, pero no creo que sirva de nada.

Por otro lado, quisiera también que me mostrara, en otra página, TODOS los registros de la tabla, ordenados por fechas, pero agrupados de la forma en que desee.

Por ejemplo:

1-1-9

noticia 1
noticia 2
noticia 3...

2-1-9

noticia 1
noticia 2
noticia 3...

O, también, por meses:

Enero 09

noticias...
noticias...

Febrero 09

noticias...
noticias...

O sea, por un lado el tema de las fechas, que no sé muy bien operar con ellas, pero por otro lado el tema de agrupar registros en torno a un campo común.

Muchas gracias.

Moleman.

P.D: Por cierto, se me olvidaba... ¿se pueden pasar variables de php a asp y viceversa?
  #2 (permalink)  
Antiguo 03/01/2009, 08:11
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Un par de preguntas relacionadas con las fechas...

Buenos días:

Para poder ver algo con una fecha anterior, lo mejor es manejar la fecha desde ASP y anexárselo a la consulta, en vez de pedirle al gestor de base de datos que lo haga.

Para ello existe la función DATEADD que puedes ver bien explicada acá: http://www.w3schools.com/Vbscript/func_dateadd.asp

Por ejemplo:

sql = " SELECT * FROM noticias WHERE fecha =#" & DATEADD("d",1,now()) & "#"

Lo del # depende de la base de datos que uses, claro.

Para la segunda pregunta, tal cual lo quieres, la agrupación se hace a través de código ASP. Lo que puedes hacer es ordenar la consulta por fecha y para cada registro de la base de datos que leas, comprobar si la fecha del último registro leído es diferente a la del siguiente. Si son diferentes, le pones el encabezado correspondiente. Como ejemplo espero que te sirva esto.

Si quieres agrupar, por ejemplo por mes y año, podrías hacer algo así:

La consulta te quedaría:

sql = " SELECT *, datepart('m',fecha) & '-' & datepart('y',fecha) as fechaformato FROM noticias ORDER BY fecha

la parte de la sentencia entre datepart y as fechaformato lo que hace es que en cada registro te añade un campo llamado fechaformato que te da el mes y el año de la fecha. Así es más fácil la comparación posterior.

Y en el código lees el campo fechaformato y lo almacenas. Al cambiar de registro, debes comparar fechaformato que tienes almacenado con el que tiene el nuevo registro. Si son diferentes, escribes la cabecera del mes. Si son iguales, no haces nada. Después, sea cual sea el caso, escribes el campo.

Espero que esto te sirva de ayuda. Seguro que hay más formas de hacerlo, pero ésta me pareció sencilla.

Un saludo
  #3 (permalink)  
Antiguo 03/01/2009, 14:27
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Un par de preguntas relacionadas con las fechas...

Muchísimas gracias por tu ayuda. La función DATEADD no la conocía, y me ha resultado muy valiosa. Me parece muy interesante todo lo que se puede llegar a hacer con ella.

En cuanto a la segunda cuestión, todavía no me he puesto con ella, ya que me parece un poco más complicada. De momento, con la primera, me ha ido muy bien.

Gracias de nuevo.

Moleman.
  #4 (permalink)  
Antiguo 04/01/2009, 10:41
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Un par de preguntas relacionadas con las fechas...

yo lo he solucionado con una consulta como la siguiente

sql = " SELECT DISTINCT datepart('m',fecha) AS mes , datepart('y',fecha) as anio FROM noticias ORDER BY fecha DESC"

la cual te devuelve todas las combinaciones de mes y año de tu tabla ordenadas de la mas actual a la mas antigua lo que resta es crear tu funcion que recorra los registros devueltos
  #5 (permalink)  
Antiguo 04/01/2009, 13:12
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: Un par de preguntas relacionadas con las fechas...

dagopoot umm creo que tu pregunta es como hacer los grupos de fecha cierto???'

porque mejor no haces dos select????

algo asi como
SELECT fecha, count(fecha) as CuantasHay
FROM tuTabla
GROUP BY fecha
ORDER BY fecha

haces tu rs y muestras
la fecha y cuantas noticias hay en esa fecha
luego con el rs haces tu segundo select

select * from tu tabla where fecha = rs("fecha")

(tienes que hacerla mejor yo solo te planteo la idea)

haces el RS2 con esos datos

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #6 (permalink)  
Antiguo 05/01/2009, 06:45
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Un par de preguntas relacionadas con las fechas...

Hola

De acuerdo con el dibujo que quiere imprimir Moleman, yo haría algo como esto

Código asp:
Ver original
  1. SQL ="SELECT Distinct(Fecha) FROM tabla"
  2. set rs = oConn.Execute(SQL)
  3. registros = rs.getrows()
  4. For i = 0 to ubound(registros,2)
  5. response.write registros(Mes,i) & "<br>"
  6.  
  7. SQL2 ="SELECT Fecha, Noticia FROM tabla WHERE Mes = '"&registros(Mes,i)&"'"
  8. set rs2 = oConn.Execute(SQL2)
  9. registros2 = rs2.getrows()
  10. For j = 0 to ubound(registros2,2)
  11. response.write registros2(Noticia,j) & "<br>"
  12. Next
  13. rs2.Close
  14. Set rs2 = Nothing
  15. response.write "<br><br>"
  16. Next
  17. rs.Close
  18. Set rs = Nothing

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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:18.