【发布时间】:2014-01-09 15:30:45
【问题描述】:
我想要一些奇怪的东西。我的表名称为EMP_INFO,其中包含员工的一些详细信息(即姓名、职务、JOIN_FROM、JOIN_TO)。我试图每年计算每个员工的任期。我有以下类型的数据
EMP_ID EMP_DESIG JOIN_FROM JOIN_TO Query Result
1 Supervisor 01-05-11 30-04-13 Should Display
2 Supervisor 15-06-10 31-12-12 Should Display
3 Jobar 01-01-12 31-12-13 Should Display
4 SR Superior 01-12-11 31-12-15 Should Display
5 Supervisor 01-05-11 31-12-13 Should Display
6 Supervisor 01-05-11 31-12-13 Should Display
7 Supervisor 01-05-11 31-12-13 Should Display
8 Supervisor 01-02-12 15-06-13 Should Display
9 SR Superior 16-03-10 18-11-11 Should Display
10 SR Superior 16-06-05 18-11-11 Should Display
11 Jobar 30-11-11 31-12-13 Should Display
12 Superior 02-02-05 31-12-20 Should Display
13 Jobar 30-11-11 31-12-13 Should Display
14 Jobar 30-11-09 31-12-10 Should Not Display
基本上我需要的是我的报告中有日期范围,让我们说从:“01-Jun-11”到“31-Dec-13”。从上面的记录集报告应该检索所有记录,因为所有记录都包含这两个日期。
我尝试过使用 BETWEEN 语法,但我相信它不会起作用。
如果有人可以帮助我,将不胜感激。
在此先感谢.. 如果这些细节还不足以理解,请告诉我,我会添加更多细节。
修改 我试过的查询
SELECT EI.*
FROM EMP_INFO EI,
(SELECT
TO_DATE('01-JUN-2011','DD-MON-YYYY') A,
TO_DATE('31-DEC-2013','DD-MON-YYYY') B FROM DUAL) X
WHERE
(EI.JOIN_FROM IS NOT NULL AND EI.JOIN_TO IS NOT NULL)
AND (
X.A BETWEEN EI.JOIN_FROM AND EI.JOIN_TO
AND X.B BETWEEN EI.JOIN_FROM AND EI.JOIN_TO
OR (EI.JOIN_FROM >= X.B AND EI.JOIN_TO <=X.A) )
修改在上表中添加了列(查询结果),其中包含每条记录的结果。
【问题讨论】:
-
您可以包含您尝试过的查询吗?
-
@AbhinavRanjan: 看看我试过的添加查询
-
表格日期列是日期类型还是varchar?
-
@AbhinavRanjan:两个日期列都属于 DATE 数据类型。
-
目前我正在使用我的手机,所以不能做太多事情。我建议使用 date_format 将您的日期转换为相同的格式,然后进行比较。
标签: database oracle stored-procedures oracle11g