N004-M3 Tier 1 · Foundations · medium

Return the trial duration as an interval

Part of Literal Values, Data Types, and Type Casting in SQL

The problem

Streamhub's product team is configuring trial period logic for the subscription platform. The 30-day free trial duration needs to be expressed as a time interval value so the system can calculate expiry dates from a signup timestamp.

Write a query to return the trial duration as an interval.

Output:

  • A single row with one column, trial_period, typed as an interval.

Run previews · Check grades

Write a query, then run it to see results here.

Worked solution Try it yourself first
Solution query
SELECT
  INTERVAL '30 days' AS trial_period

The shape

The INTERVAL keyword turns the quoted duration into a real time-span value that the subscription platform can add to a signup timestamp to get an expiry date. The type comes before the value, not after — that's the type-prefixed literal form.

Clause by clause

  • SELECT INTERVAL '30 days' produces a single interval value representing thirty days of duration. The INTERVAL keyword tells PostgreSQL to parse the quoted string as a duration; PostgreSQL accepts units like days, hours, months, years, and combinations like '1 year 6 months'. The string is the spelling; the keyword is what gives it the type.
  • AS trial_period labels the output column as the business field the trial-logic configuration reads.

Why this and not '30 days'::interval

Both shapes produce the same value. INTERVAL '30 days' is the type-prefixed literal form — the type name leads, the quoted value follows. '30 days'::interval is the cast form, identical in semantics. PostgreSQL recognises both, and either one is acceptable in production code.

The difference is stylistic. The INTERVAL prefix is how the SQL standard expects duration literals to be written and the spelling most documentation uses. The cast form is consistent with how every other type gets converted in PostgreSQL. Either is fine; pick one and use it consistently.

The trap

Write the duration as a plain string and PostgreSQL has no idea it's supposed to be a duration. SELECT '30 days' AS trial_period returns the literal text '30 days', which the platform can't add to a timestamp. Adding '30 days' to now() fails with a type-mismatch error because text + timestamp is not a defined operation. The INTERVAL keyword is what gives the value its duration meaning; its absence is the difference between a working expiry calculation and a stuck query.

You practiced producing an interval literal with the INTERVAL keyword. Intervals are first-class duration values that arithmetic operators understand — now() + INTERVAL '30 days' is how trial-expiry calculations work.

How you actually get good at SQL

Reading explains SQL. Writing it, over and over with instant feedback, is what makes you fluent.

That's the whole SQLMaxx loop: 600+ real problems, instant AI feedback, mastery you can actually see, and spaced review that won't let you forget.

A stack of SQL practice problem cards, the top card showing an employees table.
615 problems · 66 concepts

Real problems. Not toy examples.

615 hand-built problems spanning all 66 concepts, from basic SELECTs to window functions, built on real schemas and real business questions, the kind you'll actually get asked on the job. Enough reps to make SQL automatic.

A retro computer showing a SQL query marked correct with a green checkmark.
Instant AI feedback

Write a query. Know if it's right in one second.

No copying an answer and hoping it clicked. The AI grader checks your real query against real data, catches exactly what's wrong, and explains the fix in plain English, like a senior analyst reading over your shoulder on every problem.

A circular mastery progress dial filling from blue to green, the SQLMaxx diamond at its center.
Mastery tracking

Stop guessing whether you actually know it.

SQLMaxx tracks every concept and shows you what you've mastered and what's still shaky. Your skills fill in one concept at a time, so 'I think I get joins' becomes something you can prove.

A SQL query editor circled by a blue return arrow with a clock, scheduled to come back for review.
Spaced review

Learn it once. Keep it for good.

Most of what you learn this week fades by next week. So when a concept comes due for review, SQLMaxx hands you a fresh problem to solve from a blank editor, not a flashcard to re-read. A research-backed spaced-repetition algorithm (FSRS) times each return for right before you'd forget, so your SQL is still there months later, when the interview or the job actually needs it.

Practice, feedback, mastery, review. That's the loop that turns reading into real skill.

Start free

No account, no credit card. Start solving in under a minute.