current_date function in SQL
The current_date function in SQL returns the current date based on the system’s local date and is typically represented in YYYY-MM-DD format. The current_date function is commonly used in reports, data validations, and time-based calculations, providing an easy way to work with today’s date in queries.
Syntax
The basic syntax of the current_date function does not require any parameters, as it simply returns the current date:
SELECT current_date
Note how we skipped the
FROM clause – we’re not querying a table, so we can skip it. This is a great way to test other scalar function (that return a single value).
Note that we haven’t used parentheses in the function call:
current_date. This is because
current_date is a SQL standard-defined keyword representing a constant function.
The value of current_date will be calculated by the database server at the beginning of running a query and all references of the current_date in a query will have the same value. That’s why currnet_date doesn’t require parentheses: it behaves more like a variable or a constant and not a function.
Using current_date for filtering
One of the common uses for current_date is filtering data to retrieve records created on, before, or after the current date. For instance, to find all users who signed up we can run the following query:
SELECT *
FROM mobile_analytics.events
WHERE
created_at::date = current_date
Note that we have to extract the date part from the
created_at timestamp for comparison with created_at::date.
Calculating date differences
Once we have today’s date, we can calculate all sorts of values. For example, how many days have passed since a specific date. Let’s count user who created accounts within the past 30 days:
SELECT
COUNT(*)
FROM users
WHERE
created_at::date >= current_date - '30 days'::interval
Using current_date in date ranges
Finally, we can zoom into specific date ranges by combining current_date function and BETWEEN operator. For example, let’s see all purchases made within the previous week (more like 7 day period):
SELECT *
FROM purchases
WHERE
created_at::date BETWEEN current_date - INTERVAL '14 days' AND current_date - INTERVAL '7 days'
The current_date function is a simple yet essential tool in SQL, widely used for creating dynamic date-based queries that do not require constant manual adjustments to the date. Queries with current_date and current_timestamp will power all your real-time dashboards.
Database compatibility
|
MySQL
|
PostgreSQL
|
SQLite
|
Redshift
|
Big Query
|
Snowflake
|
|
|---|---|---|---|---|---|---|
current_date |
|
|
|
|
|
|
current_date