繁体   English   中英

如何从 Oracle 中的日期和时间中查找分钟?

[英]How to find minutes from Date & Time in Oracle?

我的表中有 4 列 RUNNING_INFO

TRAIN_START_DATE  VARCHAR2(8)
SCHEDULED_DATE VARCHAR2(8)
ACTUAL_DATE    VARCHAR2(8)
SCHEDULED_TIME VARCHAR2(8)
ACTUAL_TIME    VARCHAR2(8)

我必须从 Actual/Scheduled Date & time 中提取分钟,我为此编写了以下代码

SELECT TRAIN_START_DATE,SCHEDULED_DATE,ACTUAL_DATE,SCHEDULED_TIME,ACTUAL_TIME,
CEIL((TO_DATE(concat(ACTUAL_DATE, ACTUAL_TIME) , 'DD-Mon-YYYYHH24:MI:SS') - TO_DATE(TRAIN_START_DATE, 'DD-Mon-YYYY'))*1440) as ACTUAL_MINS ,
CEIL((TO_DATE(concat(SCHEDULED_DATE, SCHEDULED_TIME) , 'DD-Mon-YYYYHH24:MI:SS') - TO_DATE(TRAIN_START_DATE, 'DD-Mon-YYYY'))*1440) as SCH_MINS FROM RUNNING_INFO 

但是我没有在 ACTUAL_MINS 和 SCH_MINS 中获得正确的值,例如对于输出的以下行集,值在几分钟内不正确:请指导如何正确查找分钟。

在此处输入图片说明

两个日期之间的分钟数,其中这些日期包括时间是

( date1 - date2 ) * 1440

在您的情况下,日期/时间分为两列,您可以将它们合并为日期,因此类似于

to_date(to_char(sched_date,'yyyymmdd')||sched_time,'yyyymmddhh24:mi:ss')

在做减法之前的每个日期。 然后你就不需要 CEIL,因为浮点数会四舍五入,即使是最小的小数点

SQL> with t as
  2  (
  3  select
  4    '04-sep-2020' x1,
  5    '22:02:00' x2,
  6    '05-sep-2020' x3,
  7    '00:08:00'  x4
  8  from dual
  9  )
 10  SELECT
 11  CEIL((TO_DATE(concat(x1, x2) , 'DD-Mon-YYYYHH24:MI:SS') - TO_DATE(x3, 'DD-Mon-YYYY'))*1440) as ACTUAL_MINS ,
 12  CEIL((TO_DATE(concat(x3, x4) , 'DD-Mon-YYYYHH24:MI:SS') - TO_DATE(x1, 'DD-Mon-YYYY'))*1440) as SCH_MINS
 13  FROM t;

ACTUAL_MINS   SCH_MINS
----------- ----------
       -118       1449

SQL>
SQL> with t as
  2  (
  3  select
  4    '04-sep-2020' x1,
  5    '22:02:00' x2,
  6    '05-sep-2020' x3,
  7    '00:08:00'  x4
  8  from dual
  9  )
 10  SELECT
 11  (TO_DATE(concat(x1, x2) , 'DD-Mon-YYYYHH24:MI:SS') - TO_DATE(x3, 'DD-Mon-YYYY'))*1440 as ACTUAL_MINS ,
 12  (TO_DATE(concat(x3, x4) , 'DD-Mon-YYYYHH24:MI:SS') - TO_DATE(x1, 'DD-Mon-YYYY'))*1440 as SCH_MINS
 13  FROM t;

ACTUAL_MINS   SCH_MINS
----------- ----------
       -118       1448

SQL>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM