【问题标题】:concatenating sysdate with fixed time in oracle在oracle中将sysdate与固定时间连接起来
【发布时间】:2016-03-12 07:47:48
【问题描述】:

我想将sysdate 与我自己的时间连接起来。以下是我尝试过的查询,但我得到的是0016 而不是 2016 年。

还有其他方法可以得到如下结果吗?

查询:

select to_date(sysdate || ' 02:50:00','dd-mon-yyyy hh24:mi:ss') as MyTime from dual

输出:

我的时间

0016 年 3 月 12 日凌晨 02:50:00

【问题讨论】:

    标签: oracle date-arithmetic sysdate


    【解决方案1】:

    一种方式

    1. 将 SYSDATE 转换为字符串
    2. 附加您的固定时间元素
    3. 转换回日期

    这样说吧:

    to_date(to_char(sysdate,'YYYY-MM-DD')||' 02:50:00','YYYY-MM-DD HH24:MI:SS' ) 
    

    另一种方法:使用算术。

    1. 从 SYSDATE 中剥离实时
    2. 添加秒数((60*60*2)+(50*60)/(60*60*24)

    是否包含您的工作:

    trunc(sysdate) + ( 10200 / 86400)
    

    还有第三种方式:使用 INTERVAL(基本上是第二种方式的变体)。

    SQL> select trunc(sysdate) + to_dsinterval('0 02:50:00') as mytime
      2  from dual
      3  /
    
    MYTIME
    ------
    2016-03-12 02:50:00
    
    SQL> 
    

    【讨论】:

      【解决方案2】:

      试试这个

      SELECT TO_DATE(TO_CHAR(SYSDATE, 'DD-MON-YYYY') || ' 08:00:00', 'DD-MON-YYYY HH:MI:SS') FROM DUAL;
      

      只需将SYSDATE 更改为TO_CHAR(SYSDATE, 'DD-MON-YYYY')

      我这样做了:

      SELECT TO_CHAR(
        TO_DATE(TO_CHAR(SYSDATE, 'DD-MON-YYYY') || ' 08:00:00', 'DD-MON-YYYY HH:MI:SS')
      ,'DD-MON-YYYY HH:MI:SS') from dual;
      

      得到了

      12-MAR-2016 08:00:00 
      

      结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多