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.
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:
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.
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.
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.