我需要将日期值(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
答案 0 :(得分:2)
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
并使用mm
而不是mmm
包含2个数字的月份
答案 1 :(得分:2)
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 ...
答案 2 :(得分:1)
试试这个;
to_date('11-08-2013', 'DD-MON-YY')
D
- 每月的某一天
MON
- 三个字符的月份,即“Jan”,“Feb”,“Apr
YY
- 年度的最后两位数字。