Необходимо написать хранимую процедуру для извлечения часов из метки времени типа yymmddhhmmss в кусте SQL - PullRequest
0 голосов
/ 05 декабря 2018

Необходимость извлечения вызывающего номера клиента за определенные промежутки времени с помощью хранимой процедуры.Столбец с датой и временем имеет формат yymmddhhmmss.

20181202112658
20181201102326

Когда он был в формате DATE (11/09/2018 8:19:57), я использовал ниже, чтобы сделать выше и получить номервызовов, совершенных в определенные часы.

SELECT CALLING_NUMBER,

COUNT(CASE WHEN TO_CHAR(CALL_START_TIME,'HH24') BETWEEN '06' AND '08' THEN CALLING_NUMBER END) AS CDR6_9_COUNT,
SUM(CASE WHEN TO_CHAR(CALL_START_TIME,'HH24') BETWEEN '06' AND '08' THEN CALL_DURATION END) AS CDR6_9_DURATION,

1 Ответ

0 голосов
/ 05 декабря 2018

Просто используйте substr():

SELECT CALLING_NUMBER,
       SUM(CASE WHEN SUBSTR(CALL_START_TIME, 9, 2) BETWEEN '06' and '08' THEN 1 ELSE 0 END) as CDR6_9_COUNT,
       . . .

При необходимости может потребоваться сначала преобразовать значение в строку:

SELECT CALLING_NUMBER,
       SUM(CASE WHEN SUBSTR(CAST(CALL_START_TIME AS string), 9, 2) BETWEEN '06' and '08' THEN 1 ELSE 0 END) as CDR6_9_COUNT,
       . . .
...