es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No logro entender la conversión de tipos de fecha y zonas horarias.

Tengo una aplicación Java. Para buscar por fechas, utilizo las siguientes tecnologías: JPA y QueryDSL. La búsqueda es así:

if (nonNull(params.getPlanned_date_from()) || nonNull(params.getPlanned_date_to())) {
    predicate.and(SQLExpressions.datetrunc(DatePart.day, preorder.plannedDate)
            .between(params.getPlanned_date_from(), params.getPlanned_date_to()));
}

Un error es:

org.postgresql.util.PSQLException: ERROR: la función trunc_day(timestamp without time zone) no existe No hay ninguna función que coincida con el nombre y los tipos de argumentos proporcionados. Es posible que necesite agregar conversiones de tipo explícitas.

¿Cómo configurar la zona horaria a través de variables de entorno? Hay mucho por hacer y no hay suficientes respuestas en Internet sobre cómo trabajar con QueryDSL. Por favor, ayúdame. Puede haber algo muy fácil, pero no lo veo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para configurar la zona horaria a través de variables de entorno en una aplicación de Java que utiliza JPA y QueryDSL, puedes seguir los siguientes pasos:

    1. Asegúrate de que el servidor y el cliente de PostgreSQL tengan correctamente configurada la zona horaria. Esto se puede hacer estableciendo el parámetro “timezone” en el archivo postgresql.conf o a través del comando SET TIMEZONE.
    2. Configura la zona horaria de la JVM para que sea la misma que la del servidor y el cliente de PostgreSQL. Esto se puede hacer estableciendo el parámetro “-Duser.timezone” de la JVM con el valor de la zona horaria deseada.

    3. En tu aplicación de Java, puedes configurar la zona horaria para JPA y QueryDSL agregando la siguiente propiedad a tu archivo persistence.xml:

      Esta propiedad establece la zona horaria utilizada por JPA y Hibernate como UTC. Puedes reemplazar “UTC” por cualquier cadena de zona horaria válida.

    4. Reconstruye tu aplicación y despliégala nuevamente en tu servidor.

    Con estos pasos, tu aplicación de Java debería poder consultar correctamente la base de datos de PostgreSQL por fechas utilizando JPA y QueryDSL.

Comments are closed.