Oracle 数据库:从一天开始的总分钟数中获取时间
Oracle database: getting time from total amount of minutes from the beginning of a day
给定 - 从一天开始算起的分钟数(数字 oracle 类型),例如480.需要获取标准的oracle时间,例如- 08:00:00 上午。有什么好的函数可以做这样的操作吗?
只需将 minutes/1440 添加到日期,例如
select to_date('1.1.2015','dd.mm.yyyy')+480/1440 from dual;
最好使用INTERVAL 'minutes' 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
Given - number of minutes (number oracle type) from the beginning of a day, e.g. 480
如果分钟值在SQL中不是静态的要硬编码,而是PL/SQL 变量,然后正如@AlexPoole 提到的那样,您需要使用 NUMTODSINTERVAL.
例如,
NUMTODSINTERVAL(480, 'MINUTE')
话虽如此,
Oracle PL/SQL NUMTODSINTERVAL
函数将输入数字转换为其指定的间隔日与秒单位等值。允许的时间间隔单位可以是 DAY、HOUR、MINUTE 或 SECOND。
函数的return类型为INTERVAL.
例如,
SQL> SELECT NUMTODSINTERVAL(480, 'MINUTE') intrvl FROM DUAL;
INTRVL
---------------------------------------------------------------------
+000000000 08:00:00.000000000
给定 - 从一天开始算起的分钟数(数字 oracle 类型),例如480.需要获取标准的oracle时间,例如- 08:00:00 上午。有什么好的函数可以做这样的操作吗?
只需将 minutes/1440 添加到日期,例如
select to_date('1.1.2015','dd.mm.yyyy')+480/1440 from dual;
最好使用INTERVAL 'minutes' 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
Given - number of minutes (number oracle type) from the beginning of a day, e.g. 480
如果分钟值在SQL中不是静态的要硬编码,而是PL/SQL 变量,然后正如@AlexPoole 提到的那样,您需要使用 NUMTODSINTERVAL.
例如,
NUMTODSINTERVAL(480, 'MINUTE')
话虽如此,
Oracle PL/SQL NUMTODSINTERVAL
函数将输入数字转换为其指定的间隔日与秒单位等值。允许的时间间隔单位可以是 DAY、HOUR、MINUTE 或 SECOND。
函数的return类型为INTERVAL.
例如,
SQL> SELECT NUMTODSINTERVAL(480, 'MINUTE') intrvl FROM DUAL;
INTRVL
---------------------------------------------------------------------
+000000000 08:00:00.000000000