我有一个要求,我需要将日期值 (14-08-2013) 转换为 (14-AUG-13)。我使用了以下查询,但它不起作用:
select *
from ind_holidays
where hol_date between to_date('11-08-2013', 'dd-mmm-yyyy hh24:mi:ss') AND to_date('17-08-2013', 'dd-mmm-yyyy hh24:mi:ss')
ORDER by name
to_date 格式字符串中的时间部分是不必要的。像这样更改您的查询:
select *
from ind_holidays
where hol_date between to_date('11-08-2013', 'dd-mm-yyyy') AND to_date('17-08-2013', 'dd-mm-yyyy')
ORDER by name
并使用2 位数字mm
代替mmm
月份
Oracle 的TO_DATE
函数期望格式字符串与输入匹配。
to_date('11-08-2013', 'dd-mm-yyyy')
(注意:mm
对于 2 位数的月份编号,而不是mmm
- 使用三个字符的月份mon
)会将字符串转换为您的查询应该处理的日期。该hh24:mi:ss
部分不是必需的,因为您的字符串中没有时间组件。我机器上的 Oracle 11g 仍然可以处理它。
但你的问题说
我需要将日期值(14-08-2013)转换为(14-AUG-13)
...看起来可能是输出问题?输出中的日期列,也许?相同的格式字符串适用,例如:
SELECT TO_CHAR(hol_date, 'DD-MON-YY') FROM ...
试试这样;
to_date('11-08-2013', 'DD-MON-YY')
D
-一个月中的哪一天
MON
- 三个字符的月份,即“Jan”、“Feb”、“Apr”
YY
-年份的最后两位数。