title: Store/Retrieve a timestamp with or without timezone
body: <p>I wanted to test some differences with the timestamp and timestamp with time zone fields. But I came across something I can't really understand why it works like this.</p>
  
  <p>I have the following setup:</p>
  
  <pre><code>CREATE TABLE tbl_test_timezones (
      first_date timestamp with time zone,
      second_date timestamp 
  )
  </code></pre>
  
  <p>I have inserted some testdata:</p>
  
  <pre><code>insert into tbl_test_timezones (first_date, second_date) values (now(), now());
  </code></pre>
  
  <p>Now I wanted to check the differences between the two fields when I do a select</p>
  
  <pre><code>select 
      first_date, 
      first_date at time zone 'Europe/Brussels' as first_date_wt, 
      second_date, 
      second_date at time zone 'Europe/Brussels' as second_date_wt
  from tbl_test_timezones
  
  which gives me the following result
  
  first_date:     2016-10-03 07:03:16.63818+00    
  first_date_wt:  2016-10-03 09:03:16.63818   
  second_date:    2016-10-03 07:03:16.63818   
  second_date_wt: 2016-10-03 05:03:16.63818+00
  </code></pre>
  
  <p><strong>Question 1</strong></p>
  
  <p>I'm wondering why second_date_wt is doing -2 instead of +2 like first_date_wt?</p>
  
  <p><strong>Question 2</strong></p>
  
  <p>Let's say my application stores the timestamps with the time zone and the user wants to get some records with this timestamp. Do you have to store some kind of user setting for the user where he can enter his timezone and always include this in the select query when retrieving them? Or do you prefer to just get it and do that timezone stuff in the client application?</p>
  
  <p>for example:</p>
  
  <pre><code>select start_date at time zone (
      select user_time_zone from tbl_user_settings where user_id = 2
  )
  from tbl_projects
  </code></pre>
  
  <p>or do just</p>
  
  <pre><code>select start_date 
  from tbl_projects
  </code></pre>