如何为以下两个查询在UTC + 02(相同时区)中显示时间戳?

时间:2015-08-17 20:33:43

标签: postgresql timezone

我的第一个问题是:

SELECT distinct wfc_request_job_id,wfc_request_job_info,
               replace(iso_cc,';',' ') as "iso_cc",to_char(wfc_request_start_ts,'yyyy-MM-dd HH:mm:ss') as ts,
               sent_message_count,
               (link_object_count + poi_object_count + point_address_object_count) as request_object_count 
FROM wfc_request_job 
where 
wfc_request_job_id=173526;

返回ts为2015-08-16 03:08:59

第二次查询:

SELECT wfc_request_job_id,wfc_request_start_ts,wfc_request_end_ts,replace(iso_cc,';',' ') as "iso_ccs",sent_message_count,wfc_queue_name 
FROM wfc_request_job
where 
to_char(wfc_request_start_ts,'YYYY-MM-DD') >= to_char(to_date('08/16/2015','MM/DD/YYYY'),'YYYY-MM-DD') 
and to_char(wfc_request_start_ts,'YYYY-MM-DD') <= to_char(to_date('08/16/2015','MM/DD/YYYY'),'YYYY-MM-DD')
order by wfc_request_job_id desc

这会将上述职位ID的ts返回为“2015-08-16 15:58:59.809 + 02”

如何让两个查询在UTC + 02中返回ts - 即相同的时区

wfc_request_start_ts的数据类型是 - 带时区的时间戳

我更改为查询格式为HH24:MI:SS但是没有帮助。请注意,使用这些查询的webapp将在德国和美国开放。

1 个答案:

答案 0 :(得分:1)

根据postgresql手册to_char,有日期/时间格式的TZ(以及OF v v.4.4)模板模式。

因此在查询中你需要添加它

postgres=# select to_char(now(),'yyyy-MM-dd HH24:mm:ss TZ');
        to_char         
------------------------
 2015-08-19 12:08:56 CEST
(1 row)

另外,请确保在转换时指定时区 所以反而

to_date('08/16/2015','MM/DD/YYYY')

使用

TIMESTAMP WITH TIME ZONE '2015-08-16 00:00:00+02';

在第二个查询中。