Timestamps with or without Time Zones in PostgreSQL

See my very popular question on this subject in the dba.stackexchange site.

Bottom line is that TIMESTAMP WITH TIME ZONE should almost exclusive be used. TIMESTAMP WITHOUT TIME ZONE is wall time and its use is, in most cases an anti-pattern.

See also this wonderfull write-up on the same topic from which the following elucidating diagram has been copied:

TIMESTAMP WITH TIME ZONE stores values internally in UTC time which corresponds to the concept of absolute time that always goes forward and never regresses. In contrast, wall time (which is what you get if you look the time in a timezone) regresses due to the clocks being reset for winter / summer time.