2016-02-26 2 views
1

Я нахожусь в Postgresql и хочу удалить +9 UTC в моем запросе.Как удалить TimeZone в запросе to_timestamp Postgresql

Например: В колонке to_timestamp, я хочу, чтобы удалить +09, и только сохранить 2016-02-26 00:23:44 значение.

Это мой запрос:

select t,to_timestamp(v) from c1.hour where f = 22 and date_trunc('day',t - '1 hour'::INTERVAL) = '2016-02-26 00:00:00' order by t ;

Вот мой результат: enter image description here

И это мой результат, когда я не использовал to_timestamp: enter image description here

Могу ли я получить некоторые помогают в этом, пожалуйста?

+1

Начните с предоставления определения таблицы - типы данных необходимы для вашего вопроса. И никогда не отправляйте код как изображение. Для этого мы очень предпочитаем * текст *. –

ответ

3

Используйте функцию to_char() для форматирования timestamp для любого представления строки. Пример:

SELECT to_char(now(), 'YYYY-MM-DD HH24:MI:SS') 

вернется 2016-02-26 09:37:49 (без часового пояса)

Ваш запрос должен быть таким:

SELECT t, to_char(to_timestamp(v), 'YYYY-MM-DD HH24:MI:SS') 
FROM c1.hour 
WHERE 
    f = 22 
    AND date_trunc('day',t - '1 hour'::INTERVAL) = '2016-02-26 00:00:00' 
ORDER BY t ; 
+0

Спасибо за ваш ответ, он сработал успешно. –

2

Укажите UTC:

select to_timestamp(0)::timestamptz at time zone 'UTC' 

Я в часовом поясе + 08 и получите следующий результат:

1970-01-01 00:00:00

С спецификации часового пояса, я получаю:

1970-01-01 08: 00: 00 + 08

Преимущество в том, что вам не нужно указывать формат даты и времени, что может вызвать неожиданные результаты для пользователей. Указанное форматирование системы сохраняется.

+0

Я верю, OP хотел '1970-01-01 08: 00: 00' вместо этого. – mlt

+0

Да, это так. 'в часовом поясе« UTC »будет делать это. – IamIC

+0

'в часовом поясе« UTC »вычитает и 8 часов, что кажется не тем, что хочет OP, а просто для удаления * + 08 * в вашем случае, сохраняя остальное без изменений, как в вашей зоне. – mlt

Смежные вопросы