QueryDSL DateTime字段格式化投影

时间:2015-02-16 19:11:10

标签: java sql-server querydsl

我尝试使用QueryDSL执行返回Datetime字段的日期和时间部分的查询。

纯SQL中的查询如下所示:

select convert(varchar, FELectura, 103) as sDate,
       convert(varchar, FELectura, 108) as sTime
from dbo.T2_LecturaEstacionClima;

其中FELectura是DateTime字段,数据库是SQL Server 2012。

此查询提供以下输出:

sDate                          sTime                          
------------------------------ ------------------------------ 
02/01/2012                     00:00:00                       
02/01/2012                     01:00:00                       
02/01/2012                     02:00:00                       
02/01/2012                     03:00:00                       
02/01/2012                     08:00:00                       
02/01/2012                     09:00:00                       
02/01/2012                     10:00:00                       

如何使用QueryDSL实现相同的输出?

1 个答案:

答案 0 :(得分:2)

如果您使用Querydsl SQL,这应该可以正常工作

Expression<String> dateExpr = Expressions.stringTemplate("convert(varchar, {0}, 103)", table.feLecutra);
Expression<String> timeExpr = Expressions.stringTemplate("convert(varchar, {0}, 108)", table.feLectura);
List<Tuple> results = query.from(table).list(dateExpr, timeExpr);

并从元组实例访问列

String date = tuple.get(dateExpr);
String time = tuple.get(timeExpr);