Problemas al hacer consultas con un campo FECHA (DATETIME)

Muchos programadores tienen problemas al hacer consultas a campos de tipo Fecha por una sencilla razón: La Fecha en formato Peruano (y en otros países) es dd/mm/yy y en formato americano es mm/dd/yy.

Si haces la siguiente consulta, suponiendo que la fecha actual es 03/05/07 (3 de Mayo del 2007)

Rs.open "Select * from ventas where fecha=' & Now & ' "

Si nuestra PC tiene el formato dd/mm/yy, y el motor que usemos (Access,SQL SERVER) tiene su configuración de formato en mm/dd/yy no vamos a tener los resultados que esperamos.

Otro problema que se puede dar es que muchos motores de base de datos que están configurados en mm/dd/yy , si le das un dato como 23/07/07 , lo ya a tomas como dd/mm/yy, y si tienes mala suerte y están programando por esas fechas, tu código va a trabajar bien, pero cuando llegues a 1/8/2007 (1 de agosto del 2007) tu sistema usara su configuración y lo tomara como 8 de Enero del 2007

Imagínense si estos problemas que les menciono se dan al hacer un consulta con un” =”, piensen en lo mostrara si pedimos mostrar datos en rangos de fecha

Solución:

Trabaja tus fechas en formato ISO que es yyyymmdd con eso no hay pierde

Tus consulta debe ser así: (este format es propio del lengua SQL, no tiene que ver nada el VB)

Rs.open "Select * from ventas where Format(Fecha,'yyyymmdd')=Format('" & Now & "','yyyymmdd')"

Con eso no hay pierde al hacer consulta a campos tipos fechas, no importa la configuración de ninguna PC, ya sea como server o como cliente

Ahora, cuando manejes fechas usa controles como DTpicker (Agrega componente Microsoft Windows Common Control-2 6.0) o declara una variable y dale el valor así (Visual Basic)

Dim Fecha as Date
Fecha = DateSerial(2007,12,09) 'Año, mes, dia

Espero que esto les sirve
Saludos


Posted

in

by

Comments

5 respuestas a “Problemas al hacer consultas con un campo FECHA (DATETIME)”

  1. Kari Robledo Avatar

    Muchas gracias, fue muy útil tu explicación.

  2. beder Avatar
    beder

    gracias me ha servido mucho

  3. Pablo Avatar
    Pablo

    Hola, Saludos desde Argentina. Muy buena la explicación. Siguiendo este tema, como sería la consulta para dar formato en un INSERT INTO?
    Muchas Gracias!!

  4. pedro Avatar
    pedro

    Muchas gracias,chamaco .me sacaste de un aprieto!!!man

  5. william Avatar
    william

    Buenos días.

    te comento que tengo el siguiente inconveniente:
    Al momento de enviar información mediante una macro desde excel a access la informacion sube, pero la fecha que me sube al access no es la correcta, el formato que estoy utilizando en la programacion SQL para la fecha es la siguiente:
    Format(FECHA_OC, “dd/mm/yyyy”)
    Inclusive, también e probado con: cdate(Format(FECHA_OC, “dd/mm/yyyy”))
    Espero me puedas apoyar.

Agregue un comentario a Kari Robledo Cancelar respuesta

Su dirección de correo no se hará público. Los campos requeridos están marcados *