FROM_UNIX alternate in PostgreSQL - postgresql

Guys I have stored unix timestamps in my MySQL database, where I was reading them using the MySQL function FROM_UNIX().
Now I'm migrating the database from MySQL to PostgreSQL. In PostgreSQL, how I can read unix timestamps just like I was doing in MySQL with FROM_UNIX() ?

Taken from the manual:
to_timestamp(double precision) convert Unix epoch to time stamp
If you need parts of the created timestamp, use the extract function
select extract(year from to_timestamp(1284352323))

SELECT to_char(date(to_timestamp(1195374767)),'YYYY-MM-DD');
to_timestamp - convert to Postgresql timestamp no unix timestamp
date convert to date type
to_char format output
http://www.postgresql.org/docs/8.1/static/functions-formatting.html
extract can do the same thing but not in one step

Related

timestamp of excel to PostgreSQL

I have excel column with 2022-12-26 23:59:59 like timestamp and I want to add this data according to my local timezone to Postgres as a timestamp without timezone as a long(BIGINT) 1672117199. With which query I can achieve this?

PostgreSQL timestamp Grammer

SELECT * FROM items WHERE created_time >= 20210505143012999
on mySQL, we can give condition like WHERE created_time >= 20210505143012999.
but, I want to find it with similar format(20210505143012999) on PostgreSQL.. How can I do this?
Seems mySQL is a little lax with data types (or perhaps just more forgiving), in Postgres your value is just an number (bigint). You need to convert it with the to_timestamp function. But as an epoch it seems Postgres does not like and it also does not appear to be an epoch either. You can either pre-convert to a string then use the to_timestamp of cast it as test within the function parameters. Either way specify the format: (see demo)
select to_timestamp ('20210505143012999', 'yyyymmddhh24missms');
select to_timestamp (20210505143012999::text, 'yyyymmddhh24missms');

Save datetime with timezone in Postgres table

I am trying to save datetime with timezone in Postgres but can not find anything usefull.
Input would be like,
2021-03-21T12:24:30Z
2021-03-21T12:24:30PST'
and i am expecting output in the datetime column like,
'2001-02-16 18:38:40+05:30'
'2001-02-16 18:38:40+00'
what would be the datatype in column and what's the way i can save the date time including timezone.
You should use the TIMESTAMPTZ data type for the column - https://www.postgresql.org/docs/9.5/datatype-datetime.html

PostgreSQL how to convert date with timezone offset to UTC?

I have a PostgreSQL table with date field in the following format
2017-09-07T17:24:33+08:00
and I want to convert it to UTC time.
I've looked around but found no way to do that with this specific time format. What am I missing?
Thanks
timezone definition (https://www.postgresql.org/docs/9.1/functions-datetime.html) : The function timezone(zone, timestamp) is equivalent to the SQL-conforming construct timestamp AT TIME ZONE zone
SELECT timezone('UTC','2017-09-07T17:24:33+08:00');
if selecting from column,
with t as (
SELECT '2017-09-07T17:24:33+08:00' as tm
)
SELECT timezone('UTC',tm::timestamptz) as ts
from t;
I have a PostgreSQL table with date field in the following format: 2017-09-07T17:24:33+08:00
This is incorrect. Per Postgres documentation,
All timezone-aware dates and times are stored internally in UTC. They are converted to local time in the zone specified by the TimeZone configuration parameter before being displayed to the client.
To display a TIMESTAMP WITH TIME ZONE attribute (which, again, is stored internally in UTC) in a specific time zone, you have a few options:
By default, “They are converted to local time in the zone specified by the TimeZone configuration parameter before being displayed to the client.” This can be set in postgresql.conf, using the SQL command SET TIME ZONE, or using a number of other options.
Use the AT TIME ZONE construct.
So, in regards to your original question: You don't have to do anything to your timestamptz for Postgres to store it in UTC. To display your attribute in UTC, you can either change the TimeZone configuration paramter, or use the construct below:
SELECT dt_with_timezone AT TIME ZONE 'UTC' FROM my_table

Postgresql date inconsistent format

I am building an app using node with a Postgres backend. I have a column for date where the data type is date. The dates in the database are stored in the format YYYY-MM-DD. However, when I do a query in my app, the date returned is in the format YYYY-MM-DD + (time zone information). For example:
2016-01-06T05:00:00.000Z
Does anyone know how I can prevent this?
Thanks in advance!
Use to_char
SELECT to_char(dateColumn, 'YYYY-MM-DD') AS formattedDate FROM ...
Example:
ubuntu=> SELECT to_char(to_timestamp('2016-01-07', 'YYYY-MM-DD'), 'YYYY-MM-DD');
to_char
------------
2016-01-07
(1 row)