【问题标题】:to_date function with sysdate带有 sysdate 的 to_date 函数
【发布时间】:2012-12-15 23:48:40
【问题描述】:
select TO_CHAR(to_date(sysdate, 'DD-MON-YYYY'), 'DAY') FROM DUAL; 

当我运行这个查询时,输出是:SUNDAY。但我们知道今天是星期二(2013 年 1 月 1 日)。 和

然后将查询更改为

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 数据库的新手。请帮帮我。

【问题讨论】:

  • SYSDATE 已经是一个日期。为什么你认为有必要在上面使用 TO_DATE()?
  • @APC 现在我正在研究 oracle 的基础知识,通过这个只是尝试了一些示例,这个查询是我从其他查询中开发出来的。
  • 当我使用 SELECT TO_CHAR(TO_DATE(sysdate, 'DD-MM-RRRR'), 'DAY') from dual;答案:星期二

标签: oracle oracle10g oracle11g sysdate


【解决方案1】:

使用这个:

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

你正在使用这个:

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

给你 date=1/1/0013 是星期天

【讨论】:

    【解决方案2】:

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

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

    试试下面的简单查询:

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

    这应该返回 TUESDAY 作为输出。

    【讨论】:

    • 感谢您的快速回复
    【解决方案3】:

    To_date 用于将字符串转换为日期。因为sysdate已经是一个日期,所以不能加add to_date。

    【讨论】:

    • 严格来说,sysdate 包含日期和时间组件。例如,如果您将 sysdate 与今天的 DATE 字段值进行比较,则 = 比较将失败。您将需要 to_date() 使 = 匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多