Das Problem, das Sie in hier ausgeführt ist, dass das Ergebnis des Extraktes der Stunden als ganze Zahl (siehe B1 unten) zurückgeführt wird, und dann Subtrahieren, dass von REQUEST_TIME die Zahl der Tage Subtrahieren dass ein Ergebnis Sie haben nicht erwartet oder wollen (siehe C2 unten).
Was Sie suchen, glaube ich, würde erfordern, den B1-Wert auf ein Intervall von Stunden zu werfen (siehe D1 unten).
wählen REQUEST_TIME, TIMEZONE (current_timestamp, 'America/New_York', "Etc/GMT) -
current_timestamp A1,
extract(hours from TIMEZONE(current_timestamp, 'America/New_York','Etc/GMT') - current_timestamp) B1,
request_time - extract(hours from TIMEZONE(current_timestamp, 'America/New_York','Etc/GMT') - current_timestamp) C1,
request_time - cast(extract(hours from TIMEZONE(current_timestamp, 'America/New_York','Etc/GMT') - current_timestamp) || ' hours ' as interval) D1
from table1;
TESTDB.ADMIN(ADMIN)-> from table1;
REQUEST_TIME | A1 | B1 | C1 | D1
---------------------+----------+----+------------+---------------------
2016-01-31 12:00:00 | 04:00:00 | 4 | 2016-01-27 | 2016-01-31 08:00:00
(1 row)
Sie erwähnen Subselects in Frage und in Ihrem Beispiel-Code, ich aber ich didn‘ In diesem Fall brauchen Sie keinen Subselect.
Willkommen bei Stack Overflow! . Bitte bearbeiten Sie Ihren Beitrag und formatieren Sie ihn zur besseren Lesbarkeit. – gmuraleekrishna