Problema con las fechas con gambas y postgres - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Bases de Datos (https://gambas-es.org/forum-6.html) +--- Tema: Problema con las fechas con gambas y postgres (/thread-387.html) Páginas:
1
2
|
Problema con las fechas con gambas y postgres - Desoljor - 03-05-2021 Buenos dias, os cuento un poco. Utilizo Gambas3 10.16 en una Ubunto 18.04 Este es el código de la función que me falla Private Sub Busca_Menores_Por_Fechas(Desde As String, Hasta As String) AnyDesde = "01/01/" & (Year(Date) - Desde) AnyHasta = "31/12/" & (Year(Date) - Hasta) CmdSql = ("Select * From \"unidadfamiliar\" where \"nacimiento\" > " & AnyDesde) $Consulta = $Con.Exec(CmdSql) End Estructura de la Tabla CREATE TABLE public.usuarios ( indice integer, nombre character varying(150), nacionalidad character varying(50), documento character varying(11) NOT NULL, tipodocumento character varying(11), direccion character varying(150), sexo character varying(1), discapacidad character varying(1), nacimiento date ); Estoy intentando comparar una fecha AnyDesde con el Campo nacimiento de la BDD para obtener los registros que hallan nacido despues de esa fecha pero gambas no me acepta el >. Alguien de puede ayudar a solucinarlo? Gracias de antemano. P.D. He probado un gran numero de obciones que aparecen en los foros pero no me funcionan. RE: Problema con las fechas con gambas y postgres - Shordi - 03-05-2021 Básicamente no puedes comparar fechas con cadenas. Las fechas son números y necesitas utilizar las funciones de fecha para leer y comparar de la base de datos. RE: Problema con las fechas con gambas y postgres - Desoljor - 03-05-2021 Eso lo se Shordi, lo que no he encontrado es la forma de comparar la fecha de la BDD con una fecha que le proporcione el usuario. por ejemplo, como encontrar los empleados que se han dado de alta en una empresa desde el 01/01/2000 hasta el 31/12/2020. Gescias. RE: Problema con las fechas con gambas y postgres - Shordi - 03-05-2021 Nunca he usado portgre, por lo que la sintaxis correcta no te la puedo dar sin pasarme de listo pero estoy seguro que postgre tiene su propia batería de funciones de conversión. Algo así como el format(fecha, "dd/mm/yyyy") de gambas. Introduce esas funciones en el Select y te funcionará. Algo así como select función_de_conversión_de_postgre(mifecha,"yyyy/mm/dd") as "mifecha" where "mifecha" > "2021/12/27" Debería funcionar sin problemas Saludos RE: Problema con las fechas con gambas y postgres - tincho - 03-05-2021 (03-05-2021, 17:27)Desoljor escribió: no he encontrado es la forma de comparar la fecha de la BDD con una fecha que le proporcione el usuario. A ver si esto te ayuda. Hice una pequeña base de datos en sqlite (ver mas abajo) y logre filtrar de la manera que planteaste. Luego para PostgeSQL adapte la consulta de un mensaje de Stack Overflow para obtener los mismos resultados, pero como no tengo una base postgresql a mano ahora mismo no lo probé. SQLite Código: [b]PostgreSQL[/b] RE: Problema con las fechas con gambas y postgres - Desoljor - 03-05-2021 Gracias Shordi. El problema realmente no está en postgres, de todas maneras da lo mismo el motor de base de datos, Sql es Sql en Mysql o en postgresql. Si yo cojo y ejecuto esta sentencia desde PgMyadmin (entorno grafico de postgres) directamente funciona perfetamente, pero al pasarla a Gambas es donde Falla. "Select * From " usuarios " where nacimiento >= '01/01/1900' And nacimiento <= '31/12/1986' And sexo = 'H'" En esta sentencia le doy una fecha establecida por mi, pero cuando el año de la fecha se obtiene por formulario ya no funciona Ok tincho lo pruebo y respondo Gracias (03-05-2021, 20:41)tincho escribió: Saludos Ok tincho lo pruebo y respondo Gracias RE: Problema con las fechas con gambas y postgres - Shordi - 03-05-2021 (03-05-2021, 20:41)Desoljor escribió: El problema realmente no está en postgres, de todas maneras da lo mismo el motor de base de datos, Sql es Sql en Mysql o en postgresql. RE: Problema con las fechas con gambas y postgres - calcena - 09-05-2021 Buenas, para la comparación de fechas, que siempre son el problema de los SGBD y creo que del 100% de ellos, lo más efectivo que yo he hecho siempre son dos reglas: - standarizar que el formato sea el que coincida con el SGBD es decir si la instalación tiene English pues yyyy/mm/dd....o lo correspondiente - utilizar Between {ini} and {fin} para la comparación en un rango de fechas, porque siempre querrás que sea superior a algo, pero siempre tendrás un límite superior, por ejemplo fecha actual ....fecha actual + 1 year ....etc Saludos RE: Problema con las fechas con gambas y postgres - ariscolombia - 24-05-2021 Te cuento como lo Hago : Los Campos para el manejo de Fecha Fecha-Hora siempre los defino de este tipo. Código: fecha timestamp without time zone Al momento nutrir el campo que hace parte de un Registro, ya sea por INSERT o UPDATE Mi función que me trae el dato en el formato String Requerido por Postgresql. Código: Parte del SQL Funciones es un Archivo de Modulo, tú puede crearlo donde quieras y llamarlo como quieras.....& Funciones.FechaHora(Now()) & ",".... Código: PUBLIC FUNCTION FechaHora(Fecha AS Date) AS String Código: Parte del SQL ....& Funciones.FechaHora(TextBoxFecha.Text) & ",".... Ahora, al Momento de Realizar un SELECT Código: Date(tu_campo_fecha) >= ('" & Format$(lafecha, "yyyy-mm-dd") & "') Igual Puedes crear una Función para hacer fácil . Código: Date(tu_campo_fecha) >= " & Fecha(lafecha) & RE: Problema con las fechas con gambas y postgres - tincho - 24-05-2021 Hola ariscolombia, la imagen adjunta que pusiste no se ve. Saludos. |