【发布时间】:2018-07-13 10:35:05
【问题描述】:
我有一个表,其中日期字段是 varchar。由于它是一个遗留应用程序,我不想更改数据类型。我想在标准中编写以下查询。任何帮助将不胜感激
select * from ucms_vu vu where vu.case_e_dt is not null and to_date(vu.case_e_dt,'YYYY-MM-DD') = to_date('2018-02-02','YYYY-MM-DD')
【问题讨论】:
我有一个表,其中日期字段是 varchar。由于它是一个遗留应用程序,我不想更改数据类型。我想在标准中编写以下查询。任何帮助将不胜感激
select * from ucms_vu vu where vu.case_e_dt is not null and to_date(vu.case_e_dt,'YYYY-MM-DD') = to_date('2018-02-02','YYYY-MM-DD')
【问题讨论】:
使用纯粹的 JPA,我相信这是不可能的。因为您想对不可操作的数据进行特定操作。
如果您也使用 Hibernate,@Formula 注释可以解决您的问题。
您可以在 ucms_vu 实体中创建属性:
@Formula("to_date(case_e_dt,'YYYY-MM-DD')")
private Date caseE;
您的条件将使用此属性来执行查询。
例如:
Criteria criteria = session.createCriteria(Ucms_vu.class, "ucms");
criteria.add(Restrictions.eq("ucms.caseE", new Date("your date 02/02/2018"));
criteria.list();
【讨论】: