【问题标题】:Oracle equivalent to SQL Server DATEPARTOracle 相当于 SQL Server DATEPART
【发布时间】:2011-05-12 14:07:41
【问题描述】:

我们需要从 DATETIME 列中取出 HOUR(期望返回 0 到 23 之间的值)。

是否有与 SQL Server DATEPART 函数等效的 Oracle 函数?

【问题讨论】:

    标签: sql oracle date datepart


    【解决方案1】:
     SELECT to_number(to_char(sysdate, 'HH24')) FROM DUAL
    

    【讨论】:

      【解决方案2】:

      我想这就是你要找的东西

      select to_char(current_timestamp,'HH24') from dual;
      

      【讨论】:

        【解决方案3】:

        另一种选择是 EXTRACT 函数,它是一个 ANSI 标准,也适用于其他 DBMS,但它也需要使用 current_timestamp(也是 ANSI)而不是 sysdate

        SELECT extract(hour from current_timestamp) 
        FROM dual
        

        【讨论】:

        • 出于某种原因人们不喜欢提取。但是,我觉得它非常简单优雅。
        【解决方案4】:

        如果您想获取日期的月份名称

        select to_char( 'month', sysdate())
        

        【讨论】:

          【解决方案5】:

          关于在 oracle 中使用 DATEPART 类函数的其他方法

          DATEPART:-工作日

          --这将给一周的一天作为参考开始日

          DECLARE
          Start_day date:=to_date('30-03-2012','DD-MM-YYYY');
          check_date DATE:=SYSDATE;
          Day_of_week NUMBER;
          i NUMBER;
          BEGIN
          i:=to_char(Start_day,'D');
          day_of_week:=mod((to_char(check_date,'D') -(i-1)+7),7);
          if day_of_week=0
          THEN
          day_of_week:=7;
          end if;
          dbms_output.put_line(day_of_week);
          END;    
          

          【讨论】:

            猜你喜欢
            • 2010-12-30
            • 2016-03-08
            • 1970-01-01
            • 1970-01-01
            • 2010-11-30
            • 2011-01-07
            • 1970-01-01
            • 1970-01-01
            • 2023-02-23
            相关资源
            最近更新 更多