【发布时间】:2019-02-20 09:24:06
【问题描述】:
我需要将表中的生日转换为“MM/DD/YYYY”格式,当我这样做时,min(birthdate) 只是月份是最小数字的日期,而 max(birthdate) 是月份是最大数字的日期。如何使它显示年份最小和最大的日期,但仍采用所需的日期格式?
【问题讨论】:
我需要将表中的生日转换为“MM/DD/YYYY”格式,当我这样做时,min(birthdate) 只是月份是最小数字的日期,而 max(birthdate) 是月份是最大数字的日期。如何使它显示年份最小和最大的日期,但仍采用所需的日期格式?
【问题讨论】:
您似乎在查询min(to_char(birthdate, 'MM/DD/YYYY'))。如您所见,当您这样做时,您将获得按字典顺序计算的最小值。相反,您应该应用格式在应用 min/max:
SELECT TO_CHAR(MIN(birthdate), 'MM/DD/YYYY'), TO_CHAR(MAX(birthdate), 'MM/DD/YYYY')
FROM mytable
【讨论】:
只需use以下
with t(birthdate) as
(
select trunc(sysdate) as birthdate from dual union all
select trunc(sysdate)-300 from dual union all
select trunc(sysdate)-600 from dual union all
select trunc(sysdate)-900 from dual
)
select to_char(birthdate,'MM/DD/YYYY') as birthdate
from t;
BIRTHDATE
----------
09/16/2018
11/20/2017
01/24/2017
03/30/2016
with t(birthdate) as
(
select trunc(sysdate) as birthdate from dual union all
select trunc(sysdate)-300 from dual union all
select trunc(sysdate)-600 from dual union all
select trunc(sysdate)-900 from dual
)
select to_char(min(birthdate),'MM/DD/YYYY') as min_birthdate,
to_char(max(birthdate),'MM/DD/YYYY') as max_birthdate
from t;
MIN_BIRTHDATE MAX_BIRTHDATE
------------- -------------
03/30/2016 09/16/2018
您首先应用最小/最大转换的位置,然后根据您希望的显示样式进行格式化。
【讨论】: