Search code examples
javajpaspring-data-jpaquerydsl

Cast LocaDateTime to Date in QueryDSL


Query DSL has castToNum() but is there anything to convert LocalDateTime(job_date_time) to Date ?

SELECT user_logon as logon, cast(job_date_time as date) as 
dateTime,SUM(total_pages) as total
from job_history group by user_logon, cast(job_date_time as date) order by 
dateTime desc

Java Approach

    JPAQuery<JobHistory> queryBuilder = new JPAQuery<>(entityManager);
    QJobHistory jobHistory = QJobHistory.jobHistory;
    queryBuilder.select(jobHistory.userLogon.as("logon"),jobHistory.jobDateTime.as("dateTime"),jobHistory.totalPages.sum().as("total"))
            .from(jobHistory)
            .groupBy(jobHistory.userLogon)
            .groupBy(jobHistory.jobDateTime)
            .orderBy(Expressions.stringPath("totalPages").desc());

            queryBuilder.fetchAll();

How can I cast this expression to date?

jobHistory.jobDateTime.as("dateTime")

And this expression to date?

.groupBy(jobHistory.jobDateTime)

What I tried

Expressions.asDate(jobHistory.jobDateTime).as("dateTime");

Solution

  • Worked for me .

    Expressions
    .dateTimeTemplate(java.sql.Date.class,"cast(job_date_time as date)")
    .as("dateTime");