给定 - 从一天开始的分钟数(数字类型),例如480.需要获得标准的oracle时间,例如 - 08:00:00 AM这样的操作有什么好的功能吗?
答案 0 :(得分:5)
更好地使用 INTERVAL'分钟' MINUTE 添加分钟数。易于理解。
your_date_time + INTERVAL '480' MINUTE
例如,
SQL> SELECT TRUNC(SYSDATE), TRUNC(SYSDATE) + INTERVAL '480' MINUTE tmstamp FROM dual;
TRUNC(SYSDATE) TMSTAMP
------------------- -------------------
11/19/2015 00:00:00 11/19/2015 08:00:00
实际上,当您必须将日期作为文字传递时,另一种独立于 NLS 设置的方式。因此,不要使用 TO_DATE ,而是使用 ANSI Date literal ,它使用固定格式'YYYY-MM-DD'
并且 NLS 独立。
SQL> SELECT DATE '2015-11-19' curr_date, DATE '2015-11-19' + INTERVAL '480' MINUTE tmstamp
2 FROM dual;
CURR_DATE TMSTAMP
------------------- -------------------
11/19/2015 00:00:00 11/19/2015 08:00:00
<强> UDPATE 强>
给定 - 从一天开始的分钟数(数字类型),例如480
如果分钟值在SQL中不是静态的硬编码,而是 PL / SQL 变量,那么如@AlexPoole所提到的那样你需要使用 NUMTODSINTERVAL 强>
例如,
NUMTODSINTERVAL(480, 'MINUTE')
话虽如此,
Oracle PL / SQL NUMTODSINTERVAL
函数将输入数字转换为指定的Interval Day到Second Unit等效值。允许的间隔单位可以是DAY,HOUR,MINUTE或SECOND。
该函数的返回类型为INTERVAL 。
例如,
SQL> SELECT NUMTODSINTERVAL(480, 'MINUTE') intrvl FROM DUAL;
INTRVL
---------------------------------------------------------------------
+000000000 08:00:00.000000000
答案 1 :(得分:4)
只需将日期/ 1440添加到日期,例如
select to_date('1.1.2015','dd.mm.yyyy')+480/1440 from dual;