sql - 如何在 Oracle 中查找日期和时间的分钟数?
问题描述
我的表 RUNNING_INFO 中有 4 列
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>
推荐阅读
- argo-workflows - 我想使用 podSpecPatch 修补 volumeMounts,但工作流会失败
- kdb - 跳过错误并在 kdb 中记录下载
- ios - 带有 UICollectionReusableView 的交错视图
- r - 对具有日期的列求和
- python - 使用 odeint 模拟刚体的数值积分
- excel - 忽略循环中的单元格
- java - 如何从json API获取“item_name”到android中的java
- c++ - 如何在 C++ 中使用“结构”原型?
- firebase - 如何仅从 Firestore 快照中检索最新数据?| 扑
- elasticsearch - 无法为索引配置同义词