SQL Extract Month

Returns the month as a number from 1 to 12 — no month names, just the numeric position in the year.

What & Why

EXTRACT(MONTH FROM date_column) returns 1 through 12. Like quarter, month numbering resets every year, so pairing with EXTRACT(YEAR FROM ...) matters whenever data spans more than one year.

See How It Works

BUSINESS QUESTION

Growth wants signup counts by calendar month number.

idcreated_atcountrychannelplanactivated_atchurned_at
1012024-01-15 09:10:00+00USorganicpro2024-01-16 14:25:00+00NULL
1022024-02-10 11:05:00+00CApaidfreeNULL2024-03-20 10:00:00+00
1032024-03-12 16:35:00+00GBreferralpro2024-03-13 08:15:00+00NULL
1042024-04-01 13:20:00+00USorganicfree2024-04-03 12:00:00+00NULL
EXAMPLE QUERY
SELECT
  EXTRACT(MONTH FROM created_at)::int AS signup_month,
  COUNT(*) AS signups
FROM growth.users
GROUP BY signup_month
ORDER BY signup_month;
RESULT — exact output from the displayed Queryflo rows
signup_monthsignups
11
21
31
41

The four user signups occupy four distinct calendar months.

Now You Try

Practice this concept

Growth wants signup counts by calendar month number.

Available schema
growth

Prefix tables with growth.table_name.

signup_monthsignups
growth.users
ColumnType
idinteger
created_attimestamp with time zone
countrytext
channeltext
plantext
activated_attimestamp with time zone
churned_attimestamp with time zone
legacy_user_codetext
query.sql
Intermediate business practice

Sign up free to try it on a real business scenario