【问题标题】:Extract time part from TimeStamp column in ORACLE从 ORACLE 中的 TimeStamp 列中提取时间部分
【发布时间】:2011-02-26 11:14:44
【问题描述】:

目前我正在使用MyTimeStampField-TRUNC(MyTimeStampField) 从 Oracle 中的时间戳列中提取时间部分。

SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL

返回

+00 13:12:07.100729

这对我来说可以,从时间戳字段中提取时间部分,但我想知道是否有更好的方法(可能是使用 ORACLE 的内置函数)来做到这一点?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    EXTRACT() 函数呢?

    【讨论】:

    • 如果使用 extract 函数,应该写成SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP) || ':' ||EXTRACT(MINUTE FROM CURRENT_TIMESTAMP)|| ':' ||EXTRACT(SECOND FROM CURRENT_TIMESTAMP) FROM DUAL; 这样的方法比我实际使用的方法更有效吗?
    • @RRUZ 如果时间部分只有 1 位数字,可能还会添加前导零:SELECT LPAD(EXTRACT(HOUR FROM CURRENT_TIMESTAMP), 2, '0') || ':' || LPAD(提取(从 CURRENT_TIMESTAMP 开始的分钟),2,“0”)|| ':' || LPAD(EXTRACT(SECOND FROM CURRENT_TIMESTAMP), 2, '0') FROM DUAL;
    【解决方案2】:

    你总是可以这样做:

    select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual
    

    我相信这也适用于时间戳。

    【讨论】:

      【解决方案3】:

      这可能会有所帮助:

      Select EXTRACT(HOUR FROM (SYSDATE - trunc(sysdate)) DAY TO SECOND ) From dual;
      

      【讨论】:

        【解决方案4】:
        select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual
        

        这给出了比实际时间少 1 小时的时间戳。

        【讨论】:

          【解决方案5】:

          你只想约会然后使用

          to_char(cast(SYSDATE as date),'DD-MM-YYYY')
          

          如果您想要时间,请使用

          to_char(cast(SYSDATE as date),'hh24:mi:ss')
          

          所有的参数都变了

          'DD-MM-YYYY'
          

          'hh24:mi:ss'
          

          【讨论】:

          • 所以最后的语句将是上述语句 SELECT to_char(cast(SYSDATE as date),'DD-MM-YYYY'), to_char(cast(SYSDATE as date),'hh24: mi:ss') 来自双重
          【解决方案6】:

          我认为所讨论的方法比两个答案都更短、更快。因为它只涉及两个数学运算,没有复杂的解析、格式化和转换。

          【讨论】:

            【解决方案7】:
            select hour(CURRENT_TIMESTAMP)
            

            【讨论】:

            • 欢迎来到 SO。也许您可以通过指定它比问题的解决方案更好的方式来使您的答案更好,并按照帮助部分正确格式化您的代码。
            猜你喜欢
            • 1970-01-01
            • 2020-12-16
            • 2014-09-04
            • 2022-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-01
            相关资源
            最近更新 更多