Oracle разница между двумя датами с типом данных CHAR (23 BYTE) - PullRequest
1 голос
/ 07 мая 2020

Как найти разницу между двумя датами в минутах, оба типа данных - CHAR, используя SQL

2019-10-31 10:23:05.927 
2019-10-30 11:20:05.500

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете использовать to_date(), чтобы преобразовать обе строки в date s (без учета миллисекундной части), а затем вычесть их. Это дает вам числовое значение c, которое представляет разницу между датами в виде количества дней, которое затем можно преобразовать в часы:

(
    to_date(substr(col1, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
    - to_date(substr(col2, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
) * 24 * 60

Если вы действительно хотите включить миллисекунду, тогда это становится длинным. Вы можете преобразовать строки в timestamp s, используя to_timestamp(), а затем вычесть их; это создает интервал, из которого вам нужно извлечь каждую часть.

extract(hour from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) * 60
+ extract(minute from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
)
+ extract(second from 
    to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
    - to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) / 60
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...