我的第一个问题是:
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将在德国和美国开放。
答案 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';
在第二个查询中。