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
Muchas gracias, fue muy útil tu explicación.
gracias me ha servido mucho
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!!
Muchas gracias,chamaco .me sacaste de un aprieto!!!man
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.