SELECT strftime(DATE '1992-03-02', '%d/%m/%Y');
02/03/1992
SELECT strftime(TIMESTAMP '1992-03-02 20:32:45', '%A, %-d %B %Y - %I:%M:%S %p');
Monday, 2 March 1992 - 08:32:45 PM
strptime
Examples
The strptime(text, format)
function converts strings to timestamps according to the specified pattern.
SELECT strptime('02/03/1992', '%d/%m/%Y');
1992-03-02 00:00:00
SELECT strptime('Monday, 2 March 1992 - 08:32:45 PM', '%A, %-d %B %Y - %I:%M:%S %p');
1992-03-02 20:32:45
The strptime
function throws an error on failure:
SELECT strptime('02/50/1992', '%d/%m/%Y') AS x;
Invalid Input Error: Could not parse string "02/50/1992" according to format specifier "%d/%m/%Y"
02/50/1992
Error: Month out of range, expected a value between 1 and 12
To return NULL
on failure, use the try_strptime
function:
CSV Parsing
The date formats can also be specified during CSV parsing, either in the COPY
statement or in the read_csv
function. This can be done by either specifying a DATEFORMAT
or a TIMESTAMPFORMAT
(or both). DATEFORMAT
will be used for converting dates, and TIMESTAMPFORMAT
will be used for converting timestamps. Below are some examples for how to use this.
In a COPY
statement:
COPY dates FROM 'test.csv' (DATEFORMAT '%d/%m/%Y', TIMESTAMPFORMAT '%A, %-d %B %Y - %I:%M:%S %p');
In a read_csv
function:
SELECT *
FROM read_csv('test.csv', dateformat = '%m/%d/%Y');
Format Specifiers
ISO 8601 year with century representing the year that contains the greater part of the ISO week (see %V
).
0001, 0002, …, 2013, 2014, …, 9998, 9999
Hour (24-hour clock) as a zero-padded decimal number.
00, 01, …, 23
Hour (24-hour clock) as a decimal number.
0, 1, …, 23
Hour (12-hour clock) as a zero-padded decimal number.
01, 02, …, 12
Hour (12-hour clock) as a decimal number.
1, 2, … 12
Day of the year as a zero-padded decimal number.
001, 002, …, 366
Day of the year as a decimal number.
1, 2, …, 366
Month as a zero-padded decimal number.
01, 02, …, 12
Month as a decimal number.
1, 2, …, 12
Minute as a zero-padded decimal number.
00, 01, …, 59
Minute as a decimal number.
0, 1, …, 59
Nanosecond as a decimal number, zero-padded on the left.
000000000 - 999999999
Locale's AM or PM.
AM, PM
Second as a zero-padded decimal number.
00, 01, …, 59
Second as a decimal number.
0, 1, …, 59
ISO 8601 weekday as a decimal number where 1 is Monday.
1, 2, …, 7
Week number of the year. Week 01 starts on the first Sunday of the year, so there can be week 00. Note that this is not compliant with the week date standard in ISO-8601.
00, 01, …, 53
ISO 8601 week as a decimal number with Monday as the first day of the week. Week 01 is the week containing Jan 4.
01, …, 53
Weekday as a decimal number.
0, 1, …, 6
Week number of the year. Week 01 starts on the first Monday of the year, so there can be week 00. Note that this is not compliant with the week date standard in ISO-8601.
00, 01, …, 53
ISO date representation
1992-03-02
ISO time representation
10:30:20
Year without century as a zero-padded decimal number.
00, 01, …, 99
Year without century as a decimal number.
0, 1, …, 99
Year with century as a decimal number.
2013, 2019 etc.
Time offset from UTC in the form ±HH:MM, ±HHMM, or ±HH.
-0700
Time zone name.
Europe/Amsterdam
A literal %
character.