2015-09-21 42 views
-2

查询下面的返回正确结果如果两个日期之间的where子句没有被添加,否则它返回零,这是我创建的hibernate查询的sql等价物。 在我的数据库中日期保存为例如: - 12-Feb-2014 任何人都可以给我一个解决方案如何获取两个给定日期之间的结果。当日期条件添加到where子句时,查询不给出结果

select distinct count(customerjob0_.JOB_NUMBER) as col_0_0_ from JOB_CUSTOMER customerjob0_ 
left outer join SERVICE_LOCATION serviceloc1_ on customerjob0_.SERVICE_LOCATION_CODE=serviceloc1_.SERVICE_LOCATION_CODE 
left outer join JOB_CONTRACTS jobcontrac2_ on customerjob0_.JOB_NUMBER=jobcontrac2_.JOB_NUMBER 
left outer joinS CONTACTS contact3_ on jobcontrac2_.CONTACT_ID=contact3_.CONTACT_ID 
left outer join CUSTOMERS customer4_ on jobcontrac2_.CUST_CODE=customer4_.CUST_CODE 
left outer join CONTRACTS contract5_ on jobcontrac2_.CONTRACT_CODE=contract5_.CONTRACT_CODE 
left outer join JOB_CONTRACT_INVOICE jobcontrac6_ on jobcontrac2_.JOB_CONTRACT_ID=jobcontrac6_.JOB_CONTRACT_ID 
where to_char(customerjob0_.BU_NAME)='xYX01' 
and (to_char(customerjob0_.BRANCH_NAME) like 'UX902') 
and (to_char(customerjob0_.JOB_STATUS) in (2390 , 23400)) 
and to_char(customerjob0_.JOB_TYPE)='TEST' 
and (to_char(customerjob0_.JOB_FINISH_DATE) between '18-Sep-2008' and '18-Sep-2015'); 
+0

你比较_String_ “12月-2014” 的_String_“18月20 [08 | 15]”。因为2月!= 9月,它永远不会工作。尝试将它比作时间值? – EGOrecords

+0

其实这只是例如,我写了2014年2月12日实际上在数据库中有很多日期 – user2218550

+0

不改变问题 - “Feb”永远不会在“Sep”和“Sep”之间,因为它们是字符串。 – EGOrecords

回答

0
select distinct count(customerjob0_.JOB_NUMBER) as col_0_0_ from JOB_CUSTOMER customerjob0_ 
left outer join SERVICE_LOCATION serviceloc1_ on customerjob0_.SERVICE_LOCATION_CODE=serviceloc1_.SERVICE_LOCATION_CODE 
left outer join JOB_CONTRACTS jobcontrac2_ on customerjob0_.JOB_NUMBER=jobcontrac2_.JOB_NUMBER 
left outer joinS CONTACTS contact3_ on jobcontrac2_.CONTACT_ID=contact3_.CONTACT_ID 
left outer join CUSTOMERS customer4_ on jobcontrac2_.CUST_CODE=customer4_.CUST_CODE 
left outer join CONTRACTS contract5_ on jobcontrac2_.CONTRACT_CODE=contract5_.CONTRACT_CODE 
left outer join JOB_CONTRACT_INVOICE jobcontrac6_ on jobcontrac2_.JOB_CONTRACT_ID=jobcontrac6_.JOB_CONTRACT_ID 
where to_char(customerjob0_.BU_NAME)='xYX01' 
and (to_char(customerjob0_.BRANCH_NAME) like 'UX902') 
and (to_char(customerjob0_.JOB_STATUS) in (2390 , 23400)) 
and to_char(customerjob0_.JOB_TYPE)='TEST' 
and customerjob0_.JOB_FINISH_DATE between '18-Sep-2008' and '18-Sep-2015'; 

其实我从日期where子句删除TO_CHAR和它的工作