to_date函数与sysdate

时间:2013-01-01 05:25:18

标签: oracle oracle10g oracle11g sysdate

select TO_CHAR(to_date(sysdate, 'DD-MON-YYYY'), 'DAY') FROM DUAL; 

当我运行此查询时,输出为:SUNDAY。但我们今天知道的是星期二(1-1-2013)。 和

然后将查询更改为

select TO_CHAR(to_date('01-JAN-2013', 'DD-MON-YYYY'), 'DAY') FROM DUAL;

回答是:星期二。

然后将查询更改为

select TO_CHAR(to_date(sysdate+1, 'DD-MON-YYYY'), 'DAY') FROM DUAL;
答案是:星期一。

当我使用sysdate时为什么显示SUNDAY作为输出?

我是oracle db的新手。请帮帮我。

3 个答案:

答案 0 :(得分:5)

使用它:

 select TO_CHAR(sysdate, 'DAY') FROM DUAL;

你正在使用这个:

 to_date(sysdate, 'DD-MON-YYYY') 

给你的日期= 1/1 / 0013这是星期日

答案 1 :(得分:2)

请参阅sysdate here的文档。 Sysdate已经是日期数据类型。

您的示例查询不合适,因为to_date函数将第一个参数视为字符串而不是date

尝试以下简单查询:

     select TO_CHAR(sysdate, 'DAY') FROM DUAL; 

这应该返回TUESDAY作为输出。

答案 2 :(得分:2)

To_date用于将strin转换为日期。由于sysdate已经是日期,因此不得添加添加to_date。