Oracle VIEW-将VARCHAR2转换为DATE并找到DATE的MIN / MAX

时间:2018-12-11 02:52:35

标签: sql view oracle11g

数据:

Field1  Field2  BEGIN_DT    END_DT
R1      R2      10012015    04082018
R1      R2      04092018    09302018
R1      R2      10012018    12319999

DATES是VARCHAR2格式的,我已经使用:

BEGIN_DT = to_char(to_date(BEGIN_DT,'MMDDYY'), 'MM/DD/YYYY');
END_DT to_char(to_date(END_DT,'MMDDYY'), 'MM/DD/YYYY');

我的问题是,我试图找到最早的BEGIN_DT(最小)和最新的END_DT(最大)。

当我在VIEW中输入以下内容时,我得不到最早的BEGIN_DT

min(begin_dt),
max(end_dt),

我得到了04/09/2018,这不是最早的BEGIN_DT

但是当我将其输入到视图中时,会得到最小日期,但格式错误

min(to_char(to_date(begin_dt, 'MM/DD/YYYY'))),
max(end_dt),

我得到:01-OCT-15,而不是2015年10月1日

如何找到MM / DD / YYYY格式正确的日期的最小值/最大值?预先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下一种方法:

 min(to_char(to_date(begin_dt, 'MMDDYYYY'), 'MM/DD/YYYY'))

或这个:

to_char(min(to_date(begin_dt, 'MMDDYYYY')), 'MM/DD/YYYY')

将日期转换为字符串时,日期的默认模式为01-OCT-15,因此您必须在语法中包括自己的模式。

答案 1 :(得分:0)

尝试这个:

select to_char(begin_dt, ‘mm/dd/yyyy’) as begin_dt, 
       to_char(end_dt, ‘mm/dd/yyyy’) as end_dt 
from (select min(to_date(begin_dt, ‘mmddyyyy’)) as begin_dt, 
             max(to_date(end_dt, ‘mmddyyyy’)) as end_dt 
      from table)