Делая это через серию приведений, вы можете сделать что-то вроде:
SELECT CAST(CAST(CAST(CAST((1420 * 100 (FORMAT '99:99:99')) AS CHAR(8)) AS time ) AS TIME FORMAT 'HH:MIBT') AS CHAR(8))
Или вы можете использовать какую-то математику, чтобы разобраться и разыграть в конце:
SELECT
1420 AS intTime,
FLOOR(intTime/100) AS intHours,
intTime - (intHours * 100) AS intMinutes,
intHours * 60 + intMinutes AS totalIntMinutes,
TIME '00:00:00' + (totalIntMinutes * INTERVAL '1' MINUTE) AS totalTime,
CAST(CAST(totalTime AS TIME FORMAT 'HH:MIBT') AS CHAR(8)) AS char12HrTime
Или просто разбери и посчитай:
SELECT
1420 AS intTime,
Trim(CASE WHEN FLOOR(intTime/100) > 12 then FLOOR(intTime/100) - 12 ELSE FLOOR(intTime/100) END) || ':' || TRIM(intTime - (FLOOR(intTime/100) * 100))
Вероятно, есть несколько других способов сократить это, возможно, немного более элегантно.
В любом случае, если вы обрежете его, это будет немного уродливо, поскольку вы храните время как нечто отличное от time
типа.