• Domingo 22 de Diciembre de 2024, 18:21

Autor Tema:  Comparar Fechas En Formato String  (Leído 4708 veces)

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Comparar Fechas En Formato String
« en: Lunes 23 de Octubre de 2006, 20:49 »
0
Buenas, vengo por aqui por ayuda...

Necesito traer de la base de datos con la que trabaja mi aplicacion registros que cumplan con la siguiente condicion:

si por ej. le paso la fecha martes 24/10/2006 me tiene que traer todos los registros que esten entre el dia anterior a partir de las 15hs y el mismo dia hasta las 15hs.

El problema surge que cuando veo en la base, que ya estaba armada, que el dia y la hora estan en campos diferentes y ambos con el formato string.

Por lo tanto me toma por ej. que la fecha 29/01/06 es mayor a la fecha 05/06/06, cuando en realidad no es asi.

A alguien se le ocurre la manera para poder hacer lo que quiero sin tener que modificar la base de datos????

Quiza es una estupidez mi pregunta pero ahora no se me ocurre nada.

Saludos.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Comparar Fechas En Formato String
« Respuesta #1 en: Lunes 23 de Octubre de 2006, 21:17 »
0
que base de datos es?
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Comparar Fechas En Formato String
« Respuesta #2 en: Lunes 23 de Octubre de 2006, 21:17 »
0
A ver una solución seria coger (coger es con 'g' sierto  :huh: ???) por medio de Mid los datos e irlos comparando mes con mes y dia con día, sabiendo que mes 06 > 01, 'tonces la primera validación seria la del mes y si esta se cumple salta, y sino se compara el día.

Me hago entender????

Algo así:

Código: Text
  1. Private sub Compara(fecha1 As String, fecha2 As String)
  2. On Error Resume Next
  3. Dim mes1, mes2, dia1, dia2 As String
  4. dia1 = Mid(fecha1,1,2)
  5. dia2 = Mid(fecha2,1,2)
  6. mes1 = Mid(fecha1,4,2)
  7. mes2 = Mid(fecha1,4,2)
  8. If Val(mes1) > Val(mes2) Then
  9.  If Val(dia1) > Val(dia2) Then
  10.    'Alguna cosa
  11.  End If
  12. End If
  13. End Sub
  14.  
El pasado son solo recuerdos, el futuro son solo sueños

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Comparar Fechas En Formato String
« Respuesta #3 en: Lunes 23 de Octubre de 2006, 22:26 »
0
Tambien puedes convertir la cadena de texto que tiene la fecha a una variable de fecha (Date) con la función Cdate por ejemplo:

Código: Text
  1. Sub CVDate()
  2.     Dim strFecha1 As String
  3.     Dim strFecha2 As String
  4.     Dim datFecha1 As Date
  5.     Dim datFecha2 As Date
  6.    
  7.     strFecha1 = "29/01/06"
  8.     strFecha2 = "05/06/06"
  9.     datFecha1 = CDate(strFecha1)
  10.     datFecha2 = CDate(strFecha2)
  11.    
  12.     If datFecha1 > datFecha2 Then
  13.         MsgBox "La fecha " & strFecha1 & " es mayor que " & strFecha2
  14.     Else
  15.         MsgBox "La fecha " & strFecha1 & " es menor que " & strFecha2
  16.     End If
  17.    
  18. End Sub
  19.  

 :comp:

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Comparar Fechas En Formato String
« Respuesta #4 en: Martes 24 de Octubre de 2006, 00:26 »
0
Cita de: "cpmario"
Tambien puedes convertir la cadena de texto que tiene la fecha a una variable de fecha (Date) con la función Cdate por ejemplo:

Código: Text
  1. Sub CVDate()
  2.     Dim strFecha1 As String
  3.     Dim strFecha2 As String
  4.     Dim datFecha1 As Date
  5.     Dim datFecha2 As Date
  6.    
  7.     strFecha1 = "29/01/06"
  8.     strFecha2 = "05/06/06"
  9.     datFecha1 = CDate(strFecha1)
  10.     datFecha2 = CDate(strFecha2)
  11.    
  12.     If datFecha1 > datFecha2 Then
  13.         MsgBox "La fecha " & strFecha1 & " es mayor que " & strFecha2
  14.     Else
  15.         MsgBox "La fecha " & strFecha1 & " es menor que " & strFecha2
  16.     End If
  17.    
  18. End Sub
  19.  

 :comp:
mmm mucho mejor Gracias cpmario :smartass:  :smartass:
El pasado son solo recuerdos, el futuro son solo sueños

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Comparar Fechas En Formato String
« Respuesta #5 en: Martes 24 de Octubre de 2006, 01:05 »
0
Pero eso seria para darle tratamiento ya en Visual basic, cuando lo pueden hacer antes de 'bajar' todos los registros ¿No creen?


Por ejemplo en MySQL seria:

<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]SELECT[/color] * from bitacora WHERE str_to_date(fecha,'%d/%m/%Y')>'2006-10-13'
<!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->


apartir de esa consulta creas el recordset y ya trabajarias con los datos que necesitas


Saludos


Nota: Las funciones varian dependiendo del DBMS
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Comparar Fechas En Formato String
« Respuesta #6 en: Martes 24 de Octubre de 2006, 13:36 »
0
Claro, lo que yo queria hacer es algo parecido a lo que dijo recien F_Tanori.
Que el recorset que vaya a usar desde Visual ya tenga ese filtro hecho.

Yo estoy usando SQL Server.
existe esa funcion str_to_date o alguna parecida para SQL????

saludos!

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Comparar Fechas En Formato String
« Respuesta #7 en: Martes 24 de Octubre de 2006, 14:24 »
0
A partir de lo que dijo  F_Tanori me puse a investigar un poco y encontre esto que soluciono mi problema:

SELECT *
FROM Mi_Tabla
WHERE  CAST(dtinsercion AS DATETIME) > '10/09/2006'


Como verán de esta manera el campo dtinsercion que era una fecha en formato string lo comparó como si fuese una fecha en formato datetime.

Gracias a todos y espero que esto tambien le sirva a alguien!

Saludos.

(igualmente si a alguno se le ocurre algo mas practico que avise!!!)