Как отформатировать «время с часовым поясом» в Postgres? - PullRequest
4 голосов
/ 22 декабря 2009

У меня есть поле базы данных типа time with time zone. Как я могу запросить это поле в часовом поясе EST5EDT с выходным форматом чч: мм: сс?

Все, что я могу найти, это использовать несколько звонков на EXTRACT:

SELECT EXTRACT(HOUR FROM TIME WITH TIME ZONE '20:38:40-07' AT TIME ZONE 'EST5EDT');

[Edit:]

Для ясности, этот запрос:

SELECT TIME WITH TIME ZONE '20:38:40.001-07' AT TIME ZONE 'EST5EDT';

Возвращает «22: 38: 40.001», но я просто хочу «22:38:40» в качестве вывода.

Ответы [ 3 ]

10 голосов
/ 22 декабря 2009

Используйте функцию TO_CHAR () :

SELECT TO_CHAR(date '2001-09-28' +time, 'HH24:MI:SS')

Поскольку TO_CHAR принимает только тип данных метки времени, вам необходимо объединить произвольное значение даты с вашим значением времени.

3 голосов
/ 22 декабря 2009

«время с часовым поясом» в основном является фиктивным типом данных, и поэтому во многих случаях не поддерживается.

Как вы определяете "время с часовым поясом"? Часовые пояса зависят от дат, которые не включены в тип данных, и поэтому он не полностью определен. (да, это обязательно по стандарту SQL, но это не делает его нормальным)

Возможно, вам лучше сначала исправить тип данных, который вы используете. Либо используйте метку времени с часовым поясом, либо используйте время (без часового пояса).

0 голосов
/ 22 декабря 2009

Вы можете просто использовать CAST и CAST для типа времени:

SELECT CAST(now() AS TIME)

(Конечно, результат будет иметь другой тип данных)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...