Skip to content

Instantly share code, notes, and snippets.

@graste
Forked from jgaskins/text_to_timestamp.sql
Created December 8, 2024 16:18
Show Gist options
  • Save graste/3cf49b290ef93e4853057c4df54c4614 to your computer and use it in GitHub Desktop.
Save graste/3cf49b290ef93e4853057c4df54c4614 to your computer and use it in GitHub Desktop.
Parse Postgres TIMESTAMPs from JSON blobs
CREATE FUNCTION text_to_timestamp(text) RETURNS TIMESTAMP
LANGUAGE sql IMMUTABLE AS
$$
SELECT CASE
WHEN $1 ~ '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(\.\d+)?$' THEN
CAST($1 AS timestamp without time zone)
END
$$;
CREATE TABLE t (
id SERIAL NOT NULL,
title VARCHAR(255) generated always as (item ->> 'title') stored,
start_date TIMESTAMP generated always as (text_to_timestamp(item ->> 'startDate')) stored,
item JSONB NOT NULL,
PRIMARY KEY(id)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment