我想创建一个 ComparableExpression,它将在生成的 SQL 中以配置的 DBMS 的方言生成日期时间文字。我读过这篇文章:如何从 querydsl 获得完全物化的查询,它为 Long 值生成文字,但我还没有看到生成日期或日期时间的示例。日期文字格式是不同 DBMS 特有的。
所以在 WHERE 语句中我想得到这个:
dbo.fact_table.tx_date >= {formatted date literal}
对于{格式化日期文字},我想生成:
'19931123 00:00:00' (for MSSQL)
和
Timestamp '1993-11-23 00:00:00' (for Teradata)
我得到的最接近的是:
Expressions.dateTimeTemplate(Date.class, "{0}", alreadyFormattedDateString);
但是我必须自己格式化日期。我想提供 Date 对象并让 querydsl 进行格式化。