2

我有一个要求,我需要将日期值 (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    
4

3 回答 3

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   

并使用2 位数字mm代替mmm月份

于 2013-08-14T08:28:55.623 回答
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 ...
于 2013-08-14T08:32:37.487 回答
1

试试这样;

to_date('11-08-2013', 'DD-MON-YY')

D-一个月中的哪一天

MON- 三个字符的月份,即“Jan”、“Feb”、“Apr”

YY-年份的最后两位数。

于 2013-08-14T08:04:53.720 回答