PostgreSQL EXTRACT() Function (original) (raw)
Summary: in this tutorial, you will learn how to use the PostgreSQL EXTRACT()
function to extract a field such as a year, month, and day from a date/time value.
The EXTRACT()
function extracts a field from a date/time value. Here’s the basic syntax of the EXTRACT()
function:
EXTRACT(field FROM source)
The PostgreSQL EXTRACT()
function requires two arguments:
1) field
The field argument specifies which information you want to extract from the date/time value.
The following table illustrates the valid field values:
Field Value | TIMESTAMP | Interval |
---|---|---|
CENTURY | The century | The number of centuries |
DAY | The day of the month (1-31) | The number of days |
DECADE | The decade that is the year field divided by 10 | |
DOW | The day of the week (Sunday (0), Monday (1) … Saturday (6)). | N/A |
DOY | The day of the year (1-365/366) | N/A |
EPOCH | The number of seconds since 1970-01-01 00:00:00 UTC | The total number of seconds in the interval |
HOUR | The hour (0-23) | The number of hours |
ISODOW | The day of the week, Monday (1) to Sunday (7) | N/A |
ISOYEAR | The ISO 8601 week number of year | N/A |
MICROSECONDS | The second field, including fractional parts, multiplied by 1000000 | Sames as TIMESTAMP |
MILLENNIUM | The millennium | The number of millennium |
MILLISECONDS | The second field, including fractional parts, multiplied by 1000 | Sames as TIMESTAMP |
MINUTE | The minute (0-59) | The number of minutes |
MONTH | The month 1-12 | The number of months, modulo (0-11) |
QUARTER | The quarter of the year (1 – 4) | The number of quarters |
SECOND | The second field, including any fractional seconds | The number of seconds |
TIMEZONE | The timezone offset from UTC, measured in seconds | N/A |
TIMEZONE_HOUR | The hour component of the time zone offset | N/A |
TIMEZONE_MINUTE | The minute component of the time zone offset | N/A |
WEEK | The number of the ISO 8601 week-numbering week of the year | N/A |
YEAR | The year | Sames as TIMESTAMP |
2) source
The source
is a value of type TIMESTAMP or INTERVAL. If you pass a DATE value, the function will cast it to a TIMESTAMP
value.
The EXTRACT()
function returns a double precision value.
Let’s explore some examples of using the EXTRACT()
function.
The following example uses the EXTRACT()
function to extract the year from a timestamp:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2016-12-31 13:30:15') y;
Output:
y
------
2016
(1 row)
The following example uses the EXTRACT()
function to extract the quarter from a timestamp:
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2016-12-31 13:30:15') q;
Output:
q
---
4
(1 row)
The following example uses the EXTRACT()
function to extract the month from a timestamp:
SELECT EXTRACT(MONTH FROM TIMESTAMP '2016-12-31 13:30:15') m;
Output:
m
----
12
(1 row)
The following example uses the EXTRACT()
function to extract the day from a timestamp:
SELECT EXTRACT(DAY FROM TIMESTAMP '2016-12-31 13:30:15') d;
Output:
d
----
31
(1 row)
The following example uses the EXTRACT()
function to extract the century from a timestamp:
SELECT EXTRACT(CENTURY FROM TIMESTAMP '2016-12-31 13:30:15') century;
Output:
century
---------
21
(1 row)
The following example uses the EXTRACT()
function to extract the decade from a timestamp:
SELECT EXTRACT(DECADE FROM TIMESTAMP '2016-12-31 13:30:15') decade;
The following is the result:
decade
--------
201
(1 row)
The following example uses the EXTRACT()
function to extract the day of the week from a timestamp:
SELECT EXTRACT(DOW FROM TIMESTAMP '2016-12-31 13:30:15') day_of_week;
The result is:
day_of_week
-------------
6
(1 row)
The following example uses the EXTRACT()
function to extract the day of the year from a timestamp:
SELECT EXTRACT(DOY FROM TIMESTAMP '2016-12-31 13:30:15') day_of_year;
It returned 366:
day_of_year
-------------
366
(1 row)
The following example uses the EXTRACT()
function to extract the epoch from a timestamp:
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2016-12-31 13:30:15') epoch;
The result is:
epoch
-------------------
1483191015.000000
(1 row)
The following example uses the EXTRACT()
function to extract the hour from a timestamp:
SELECT EXTRACT(HOUR FROM TIMESTAMP '2016-12-31 13:30:15') h;
Result:
h
----
13
(1 row)
The following example uses the EXTRACT()
function to extract the minute from a timestamp:
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2016-12-31 13:30:15') min;
Here is the result:
min
-----
30
(1 row)
The following example uses the EXTRACT()
function to extract the second from a timestamp:
SELECT EXTRACT(SECOND FROM TIMESTAMP '2016-12-31 13:30:15') sec;
The result includes second and its fractional seconds:
sec
-----------
15.000000
(1 row)
The following example uses the EXTRACT()
function to extract the weekday according to ISO 8601:
SELECT EXTRACT(ISODOW FROM TIMESTAMP '2016-12-31 13:30:15') weekday_iso;
Output:
weekday_iso
-------------
6
(1 row)
The following example uses the EXTRACT()
function to extract the millisecond from a timestamp:
SELECT EXTRACT(MILLISECONDS FROM TIMESTAMP '2016-12-31 13:30:15') ms;
The result is 15 * 1000 = 15000
ms
-----------
15000.000
(1 row)
The following example uses the EXTRACT()
function to extract the microseconds from a timestamp:
SELECT EXTRACT(MICROSECONDS FROM TIMESTAMP '2016-12-31 13:30:15') microsec;
The result is 15 * 1000000 = 15000000
microsec
----------
15000000
(1 row)
The following example uses the EXTRACT()
function to extract the year from an interval:
SELECT
EXTRACT(
YEAR
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
) y;
Result:
y
---
6
(1 row)
The following example uses the EXTRACT()
function to extract the quarter from an interval:
SELECT
EXTRACT(
QUARTER
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
2
The following example uses the EXTRACT()
function to extract the month from an interval:
SELECT
EXTRACT(
MONTH
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
5
The following example uses the EXTRACT()
function to extract the day from an interval:
SELECT
EXTRACT(
DAY
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
4
The following example uses the EXTRACT()
function to extract the hour from an interval:
SELECT
EXTRACT(
HOUR
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
3
The following example uses the EXTRACT()
function to extract the minute from an interval:
SELECT
EXTRACT(
MINUTE
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
2
The following example uses the EXTRACT()
function to extract the second from an interval:
SELECT
EXTRACT(
SECOND
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
1
The following example uses the EXTRACT()
function to extract the millisecond from an interval:
SELECT
EXTRACT(
MILLISECONDS
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
1000
The following example uses the EXTRACT()
function to extract the microsecond from an interval:
SELECT
EXTRACT(
MICROSECONDS
FROM
INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
1000000
The following example uses the EXTRACT()
function to extract the decade from an interval:
SELECT
EXTRACT(
DECADE
FROM
INTERVAL '60 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
60
The following example uses the EXTRACT()
function to extract the millennium from an interval:
SELECT
EXTRACT(
MILLENNIUM
FROM
INTERVAL '1999 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
1
The following example uses the EXTRACT()
function to extract the century from an interval:
SELECT
EXTRACT(
CENTURY
FROM
INTERVAL '1999 years 5 months 4 days 3 hours 2 minutes 1 second'
);
Result:
19
- Use the PostgreSQL
EXTRACT()
function to extract a field from a date/time or interval value.