【问题标题】: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】:
一种方式
- 将 SYSDATE 转换为字符串
- 附加您的固定时间元素
- 转换回日期
这样说吧:
to_date(to_char(sysdate,'YYYY-MM-DD')||' 02:50:00','YYYY-MM-DD HH24:MI:SS' )
另一种方法:使用算术。
- 从 SYSDATE 中剥离实时
- 添加秒数
((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
结果。