使用 eclipselink jql 从日期中提取年、月和日
extract year, mounth and day from a date using eclipselink jql
我正在将日期从 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。
我只想从中提取日期部分(没有时间)并将其与数据库中的时间戳进行比较 like 2017-03-02 18:57:19。 152 使用 eclipselink jpql。
所以它会是这样的: cast(2017-03-02 18:57:19.152 as varchar) like 2017-03-02 18 其中 "like" 之后的部分是 date prat from日期。
查看此 basic eclipselink guide 我发现我可以使用如下提取方法:extract(year from 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)
我不想要这样的东西:
提取物(来自e.reqDate的年份)=:提取物(来自确切日期的年份)和提取物(来自e.reqDate的月份)=:提取物(来自确切日期的月份)和提取物(来自e.reqDate的日期)=:提取(确切日期的日期)
我希望 EclipseLink 支持以下供应商扩展 JPQL 函数
MONTH(field)
YEAR(field)
DAY(field)
请注意,这些不是 JPA 标准,但大多数 JPA 提供程序都支持它们。查看您的提供商的手册。 "extract" 是一个 SQL 函数,它只适用于 SQL 极少数数据库,所以最好避免使用
由于你想传入一个日期对象并且只比较不包括时间部分的日期值,你可以尝试在 JPQL 中使用 TruncateDate 或 Trunc 选项:
"select e from MyEntity e where truncateDate(e.reqDate) = :dateParameter"
TRUNC 在大多数数据库上都有,如果没有给定 year/month/day 参数,则应该默认删除时间。可以使用 JPQL 的 FUNCTION:
在其他提供程序中访问它
"select e from MyEntity e where FUNCTION('TRUNC', e.reqDate) = :dateParameter"
我正在将日期从 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。
我只想从中提取日期部分(没有时间)并将其与数据库中的时间戳进行比较 like 2017-03-02 18:57:19。 152 使用 eclipselink jpql。
所以它会是这样的: cast(2017-03-02 18:57:19.152 as varchar) like 2017-03-02 18 其中 "like" 之后的部分是 date prat from日期。
查看此 basic eclipselink guide 我发现我可以使用如下提取方法:extract(year from 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)
我不想要这样的东西: 提取物(来自e.reqDate的年份)=:提取物(来自确切日期的年份)和提取物(来自e.reqDate的月份)=:提取物(来自确切日期的月份)和提取物(来自e.reqDate的日期)=:提取(确切日期的日期)
我希望 EclipseLink 支持以下供应商扩展 JPQL 函数
MONTH(field)
YEAR(field)
DAY(field)
请注意,这些不是 JPA 标准,但大多数 JPA 提供程序都支持它们。查看您的提供商的手册。 "extract" 是一个 SQL 函数,它只适用于 SQL 极少数数据库,所以最好避免使用
由于你想传入一个日期对象并且只比较不包括时间部分的日期值,你可以尝试在 JPQL 中使用 TruncateDate 或 Trunc 选项:
"select e from MyEntity e where truncateDate(e.reqDate) = :dateParameter"
TRUNC 在大多数数据库上都有,如果没有给定 year/month/day 参数,则应该默认删除时间。可以使用 JPQL 的 FUNCTION:
在其他提供程序中访问它"select e from MyEntity e where FUNCTION('TRUNC', e.reqDate) = :dateParameter"