Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

steampipe query shell munges date and timestamptz types on output #4450

Open
danstoner opened this issue Nov 21, 2024 · 1 comment
Open

steampipe query shell munges date and timestamptz types on output #4450

danstoner opened this issue Nov 21, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@danstoner
Copy link

Describe the bug

The steampipe query shell has different behavior than native postgres client(s) when interacting with date and timestamptz (timestamp with time zone) data types.

When connecting to a steampipe database via psql I get the expected results (the same as every other postgres database).

  1. The date postgres type is year, month, and day only... it does not include time of day.
  2. The timestamptz postgres type relies on time zone of the current session to determine which timezone should be presented. It does not force the output timezone to match my local computer's timezone. It is possible to get results out of postgres that display the timestamp with time zone in UTC.

When using the steampipe interactive query shell, there appears to be "munging" of date and timestamptz data types that is inconsistent with postgres native handling of those types.

Steampipe version (steampipe -v)

Steampipe v1.0.0

To reproduce

Note: laptop local time is UTC-5

$ steampipe query
Welcome to Steampipe v1.0.0
For more information, type .help
> show time zone;
+----------+
| TimeZone |
+----------+
| UTC      |
+----------+
> select '1984-01-01T00:00:00-00:00'::date;
+---------------------+
| date                |
+---------------------+
| 1984-01-01 00:00:00 |
+---------------------+

> select '1984-01-01T00:00:00-00:00'::timestamptz;
+---------------------------+
| timestamptz               |
+---------------------------+
| 1983-12-31T19:00:00-05:00 |
+---------------------------+
> set time zone 'US/Pacific';
> show time zone;
+------------+
| TimeZone   |
+------------+
| US/Pacific |
+------------+
> select '1984-01-01T00:00:00-00:00'::timestamptz;
+---------------------------+
| timestamptz               |
+---------------------------+
| 1983-12-31T19:00:00-05:00 |
+---------------------------+

Expected behavior

Note: laptop local time is UTC-5

$ steampipe service start
$ psql postgres://steampipe:.../steampipe

steampipe=> show time zone;
 TimeZone 
----------
 UTC
(1 row)

steampipe=> select '1984-01-01T00:00:00-00:00'::date;
    date    
------------
 1984-01-01
(1 row)


steampipe=> select '1984-01-01T00:00:00-00:00'::timestamptz;
      timestamptz       
------------------------
 1984-01-01 00:00:00+00
(1 row)

steampipe=> set time zone 'US/Pacific';
SET
steampipe=> show time zone;
  TimeZone  
------------
 US/Pacific
(1 row)

steampipe=> select '1984-01-01T00:00:00-00:00'::timestamptz;
      timestamptz       
------------------------
 1983-12-31 16:00:00-08
(1 row)

Additional context

It seems like Steampipe output should be able to give me timestamps in the timezone of my choice (or always UTC), but not force timestamps to match my local computer's timezone. Not providing UTC output makes it challenging to match up the output with other tools that are in UTC. Also, when sharing the output / report with collaborators in multiple different timezones we use "Everything is in UTC" for sanity.

@danstoner danstoner added the bug Something isn't working label Nov 21, 2024
@pskrbasu
Copy link
Contributor

Hey @danstoner, thanks for raising this detailed issue. We will take a look at it and get it sorted. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants