Utilisation de TO_CHAR()
Il y a une demande de fonctionnalité en attente pour ajouter le support pour les fournisseurs spécifiques. to_char()
fonctions : https://github.com/jOOQ/jOOQ/issues/8381
Afin de normaliser une telle fonction, des recherches supplémentaires doivent être effectuées pour s'assurer que nous pouvons couvrir tout ce que chaque fournisseur implémente ici, car la logique de formatage est malheureusement assez spécifique à chaque fournisseur, et typée de manière stricte.
Donc, si vous voulez utiliser to_char()
pour l'instant, vous devrez vous contenter d'utiliser Modélisation SQL simple ce que vous avez déjà fait. Vous pourriez évidemment factoriser cet utilitaire sous une forme réutilisable, telle que :
public static Field<String> toChar(Field<?> date, String format) {
return DSL.field("to_char({0}, {1})", SQLDataType.VARCHAR, date, DSL.inline(format));
}
Tronquer les dates
Bien sûr, dans votre requête particulière, vous pouvez également utiliser les fonctions SQL standard, telles que CAST()
. I pensez à que ce que vous essayez de faire est de tronquer les informations temporelles de votre timestamp
o timestamptz
vous pouvez donc faire ceci à la place :
SELECT count(*), CAST (created_date AS DATE) d
FROM log
GROUP BY d
ORDER BY d
Ou avec jOOQ :
Field<Date> d = LOG.CREATED_DATE.cast(SQLDataType.DATE);
jooq.select(count(), d)
.from(LOG)
.groupBy(d)
.orderBy(d)
.fetch();