我从primefaces日历发送日期到支持bean。 primefaces发送的对象是Date。
<p:calendar id="exact_Date" value="#{h.model.arhExactDate}" pattern="yyyy/MM/dd"/>
调试器中的日期看起来像Thu Mar 02 00:00:00 EET 2017。
我想从中仅提取日期部分(withowt time)并将其与数据库的时间戳进行比较 2017-03-02 18:57:19.152使用eclipselink jpql。
所以它会像:cast(2017-03-02 18:57:19.152 as varchar),如2017-03-02 18其中的部分&#34;喜欢&#34;是从约会开始的日期。
看看这个basic eclipselink guide我看到我可以使用提取方法,如:提取(年份来自my_date)。但是我怎样才能提取我所需要的一切呢?
我尝试了下面的查询但不是有效的表达式:
select e from MyEntity e where extract(year from e.reqDate) = :extract(year from exactDate)
如果有效,我希望有类似的东西:
extract(year,mounth,day from e.reqDate) =:(exactDate)
我不想要这样的东西: extract(来自e.reqDate的年份)=:extract(来自exactDate的年份)和extract(来自e.reqDate的月份)=:extract(来自exactDate的月份)和extract(来自e.reqDate的日期)=:extract(来自exactDate的日期)
答案 0 :(得分:0)
我希望EclipseLink支持以下供应商扩展JPQL函数
MONTH(field)
YEAR(field)
DAY(field)
请注意,这些不是JPA标准,但大多数JPA提供商都支持它们。查看提供商的手册。 “extract”只是一个SQL函数,只能在非常少的数据库中使用SQL,因此最好避免使用
答案 1 :(得分:0)
由于您希望传入日期对象并仅比较不包括时间部分的日期值,因此您可以尝试在JPQL中使用TruncateDate或Trunc选项:
"select e from MyEntity e where truncateDate(e.reqDate) = :dateParameter"
TRUNC在大多数数据库上,如果没有给出年/月/日,参数者应默认剥离时间。可以使用JPQL的FUNCTION:
在其他提供程序中访问它"select e from MyEntity e where FUNCTION('TRUNC', e.reqDate) = :dateParameter"