Subject: [postgresql-interfaces/psqlodbc] issue #95: SELECT does not return TimeZone Info from a TIMESTAMP with TIME ZONE column

From: "raddakal (@raddakal)" <[email-masked]>
Date: Fri, 07 Mar 2025 03:13:33 +0000

We are using the PostgreSQL native ODBC driver to select data from a PostgreSQL table with timestamp with time zone column. The driver is truncating the TIMEZONE component from the data and is just returning the timestamp value.

The DDL and DML details are given below:

postgres=# create table public.tstztab(tscol timestamp, tstzcol timestamptz);
CREATE TABLE
postgres=# insert into public.tstztab values(current_timestamp, current_timestamp);
INSERT 0 1
postgres=# select * from public.tstztab;
           tscol            |            tstzcol            
----------------------------+-------------------------------
 2025-03-06 18:10:10.732499 | 2025-03-06 18:10:10.732499-08
(1 row)

And when we run the program to select the data from both the columns, We get the same data for both the columns, where the tz info is getting truncated (basically getting the wrong data). Please note that the SQL_C_CHAR is used as the C data type for both the columns.

bash-4.4$ ./a.out 
Connecting to database.
Connected to database.
Fetching results...
2025-03-06 18:10:10.732499     2025-03-06 18:10:10.732499

Attached the standalone ODBC program, using which the reported issue can be easily reproduced.

[select_ts_pg.txt](https://github.com/user-attachments/files/19119502/select_ts_pg.txt)

Can you please let us know how to retrieve the complete data (including the TZ component) from a TIMESTAMP with TIME ZONE type column using the PostgreSQL native ODBC driver.

Quick help is much appreciated!!

Thanks,
Ranjeeth.

---

From: "davecramer (@davecramer)" <[email-masked]>
Date: Fri, 07 Mar 2025 10:56:05 +0000

That's interesting. Thanks for the report

---

From: "davecramer (@davecramer)" <[email-masked]>
Date: Mon, 10 Mar 2025 13:07:57 +0000

>From what I can tell ODBC does not support TIMESTAMP WITH TIME ZONE. I'm as surprised as you are.
I would not expect it to simply truncate it. Does it return it with the time adjusted correctly?

---

From: "raddakal (@raddakal)" <[email-masked]>
Date: Tue, 11 Mar 2025 16:06:54 +0000

It simply truncates the time zone component without adjusting the data value.  
Can the timetz/timestamptz data be returned as any other SQL_VARCHAR data column (to return the data as is)?

Thanks.

---

From: "davecramer (@davecramer)" <[email-masked]>
Date: Fri, 14 Mar 2025 10:57:38 +0000

I suppose it could. Feel free to provide a PR

---

From: "raddakal (@raddakal)" <[email-masked]>
Date: Fri, 19 Sep 2025 06:47:00 +0000

Can you please let us know what is the process for submitting the PR? Do I need to obtain any privileges to be able to submit the PR? If there is any document for this process, please share the same.

We will try to work on this issue.

Thanks.

---

From: "davecramer (@davecramer)" <[email-masked]>
Date: Fri, 19 Sep 2025 15:44:02 +0000

clone the repo into your own account. create a branch, make your changes and push to that branch. Then create a PR from your branch