使用数据类型varchar和date的colums之间的时间比较

时间:2018-05-23 18:38:21

标签: sql oracle types date-conversion

在我的表格中,我有两列,即[p]ython != python & RECEIVED_TIME

  • PROCESSES_DATE是一个varchar列,其中包含RECEIVED_TIME格式的时间,例如1430下午2:30。

  • HH24MI是日期列,其中包含PROCESSED_DATE格式的完整日期,例如5月23日下午4点40分,时间是2015年5月23日16:10:00。

现在我想找出处理日期超过30分钟的行与接收时间相比。

请帮我解决问题。

1 个答案:

答案 0 :(得分:0)

嗯,只有一切都在同一天发生才有意义。例如:

`KeyStore.entryInstanceOf(alias , KeyStore.PrivateKeyEntry.class)`

如果我们将RECEIVED_TIME转换为DATE数据类型,我们得到:

SQL> create table test
  2    (received_time  varchar2(20),
  3     processes_date date);

Table created.

SQL> insert into test values
  2    ('1430', to_date('23.05.2018 16:10:00', 'dd.mm.yyyy hh24:mi:ss'));

1 row created.

SQL> insert into test values
  2    ('1430', to_date('23.05.2018 18:10:00', 'dd.mm.yyyy hh24:mi:ss'));

1 row created.

SQL> insert into test values
  2    ('1430', to_date('23.05.2018 14:50:00', 'dd.mm.yyyy hh24:mi:ss'));

1 row created.

SQL>

阿哈; SQL> select to_date(received_time, 'hh24mi') rectim, 2 processes_date 3 from test; RECTIM PROCESSES_DATE ---------------- ---------------- 01.05.2018 14:30 23.05.2018 16:10 01.05.2018 14:30 23.05.2018 18:10 01.05.2018 14:30 23.05.2018 14:50 SQL> 被“转换”为当月的第一天。我们将对RECEIVED_TIME执行相同的操作,并使用PROCESSES_DATETO_DATE函数与相应的格式掩码相结合:

TO_CHAR

尼斯;现在我们可以做一些计算,看看哪一行花了30多分钟才完成;我将值四舍五入为5位小数以节省空间。另外,请注意我正在逐步执行此操作,以便您了解我们如何达到分钟,因为两个DATE数据类型值的差异是天数他们之间:

SQL> select to_date(received_time, 'hh24mi') rectim,
  2         to_date(to_char(processes_date, 'hh24mi'), 'hh24mi') proctim
  3  from test;

RECTIM           PROCTIM
---------------- ----------------
01.05.2018 14:30 01.05.2018 16:10
01.05.2018 14:30 01.05.2018 18:10
01.05.2018 14:30 01.05.2018 14:50

SQL>

最后,您正在寻找的结果:

SQL> with inter as
  2    (select to_date(received_time, 'hh24mi') rectim,
  3            to_date(to_char(processes_date, 'hh24mi'), 'hh24mi') proctim
  4    from test
  5    )
  6  select
  7    proctim,
  8    rectim,
  9    round(proctim - rectim, 5) days,
 10    round((proctim - rectim) * 24, 5) hours,
 11    round((proctim - rectim) * 26 * 60, 5) minutes
 12  from inter;

PROCTIM          RECTIM                 DAYS      HOURS    MINUTES
---------------- ---------------- ---------- ---------- ----------
01.05.2018 16:10 01.05.2018 14:30     ,06944    1,66667  108,33333
01.05.2018 18:10 01.05.2018 14:30     ,15278    3,66667  238,33333
01.05.2018 14:50 01.05.2018 14:30     ,01389     ,33333   21,66667

SQL>