【问题标题】:Insert date in oracle在 oracle 中插入日期
【发布时间】:2014-03-04 08:59:11
【问题描述】:

当我在 Oracle 中执行以下查询时

select TO_CHAR((CURRENT_DATE),'DD-Mon-YYYY HH24:MI:SS')  from dual;
 O/P : 04-Mar-2014 14:25:14

我想只选择current date,而不选择current time,如下所示

select TO_CHAR(trunc(CURRENT_DATE),'DD-Mon-YYYY HH24:MI:SS')  from dual;
O/P  :  04-Mar-2014 00:00:00

实现的唯一方法是在查询上应用函数trunc()?有没有别的办法?

编辑:感谢您的回答。可以在没有任何功能的情况下完成吗?(不使用 to_char 或 trunc)
{很抱歉错过了这些信息}

【问题讨论】:

  • 谁能解释一下为什么我收到了这个问题的反对票。这是一个微不足道的问题吗?

标签: sql oracle date


【解决方案1】:

答案很简单否,没有函数只获取日期/时间的日期部分(即使current_date 或sysdate 毕竟是函数)。

您应该始终使用trunc 来获取当前日期,而不是时间。

没有必要同时使用trunc 和to_char。保留to_char,不要指定时间部分。

这就足够了:

获取日期为varchar:

select TO_CHAR(CURRENT_DATE,'DD-Mon-YYYY')  from dual

获取日期为date,时间部分为00:00:00:

select trunc(CURRENT_DATE)  from dual

【讨论】:

    【解决方案2】:

    你可以这样做:

    select TO_CHAR(CURRENT_DATE,'DD-Mon-YYYY')||' 00:00:00'  from dual;
    

    【讨论】:

    • 那不是 OP 要求的
    【解决方案3】:

    还有 EXTRACT 函数可以这样使用:

    SELECT extract(DAY FROM sysdate)
    ||'-' ||
    extract(MONTH FROM sysdate) 
    || '-' || extract(YEAR FROM sysdate) 
    FROM dual;
    

    结果:2014 年 4 月 3 日

    【讨论】:

      【解决方案4】:

      使用此查询...

      select (TO_CHAR(TRUNC(CURRENT_DATE),'DD-Mon-YYYY HH24:MI:SS'))  from dual
      

      【讨论】:

      • 除了多余的和不必要的括号外,这与问题中显示的内容有何不同?
      猜你喜欢
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 2017-01-03
      • 2021-03-13
      • 1970-01-01
      • 2016-07-13
      相关资源
      最近更新 更多