How to Get Current Date in PostgreSQL: Your Comprehensive Guide

By Cristian G. Guasch • Updated: 09/22/23 • 8 min read

When working with databases, it’s crucial to understand how to manipulate and retrieve data effectively. One common task you might encounter is fetching the current date in PostgreSQL. It’s a simple but essential function that lets you keep track of when specific actions occur within your system.

In PostgreSQL, there are straightforward ways to get the present date. The good news is, these methods don’t require any complex coding or extensive knowledge of SQL. Whether you’re an experienced developer or a beginner trying to navigate the world of databases, I’m here to show you just how easy this process can be.

So, let’s dive right into understanding how to get the current date in PostgreSQL. By the end of this guide, you’ll have added another useful skill to your database management toolbox.

Understanding PostgreSQL Date and Time Data Types

In the world of database management, it’s crucial to understand the date and time data types. Here’s where PostgreSQL steps up, offering a robust suite of options tailored for each unique need. Let me guide you through these types.

Firstly, there’s the DATE type in PostgreSQL that stores the year, month, and day values. It’s your go-to choice when you only need to work with dates. For instance:


This query will return today’s date.

Next in line is TIME. This type is all about hours, minutes, seconds even down to microseconds if needed! If you’re dealing with events or logs where precise time matters but the date doesn’t – this is your pick.


Running this query will get you the current time.

But what if we need both? That’s where TIMESTAMP comes into play. This data type combines both date and time elements together into one package.


Executing this SQL statement gets us both today’s date and current time.

It would be amiss not to mention INTERVAL, another helpful data type available in PostgreSQL. As its name suggests, it represents a period or “interval” of time – from years right down to microseconds.
Pro tip: Don’t confuse yourself between TIMESTAMP without timezone (TIMESTAMP) and TIMESTAMP with timezone (TIMESTAMPTZ). The latter helps when dealing with multiple different international time zones simultaneously by storing all times in UTC format internally.

Even seasoned developers can trip over nuances like these so don’t beat yourself up if things seem tricky at first! Practice makes perfect as they say; keep exploring these data types until they become second nature.
Surely, understanding how to fetch the current date in PostgreSQL is a nifty skill. It’s one of those things that comes up more often than you’d think when working with this robust relational database management system (RDBMS). So, let’s dive into it without further ado.

Now, if you’re asking yourself why knowing the current date matters in a database context, consider this: tracking transactions or logging events based on timing is a common requirement for many applications. And PostgreSQL provides an incredibly simple way to get this information by using the CURRENT_DATE function.

Here’s how you can use it:


It’s as simple as that! The CURRENT_DATE function will return today’s date. Remember, this function doesn’t require any arguments at all; just call it and PostgreSQL will do the rest.

However, there are various formats in which you might want to retrieve the date. For instance, if you need to get not only the date but also time down to fractions of seconds then use NOW() or CURRENT_TIMESTAMP.

Check these out:


Both functions return similar outputs – they give you both the current date and time.

One thing I’d caution against is mistakenly calling these functions as though they’re taking arguments like so: CURRENT_DATE(). This would result in an error because neither CURRENT_DATE, nor NOW, nor CURRENT_TIMESTAMP take any parameters.

I hope my guidance helps clear up any confusion regarding obtaining current dates within PostgreSQL environments!

Common Functions to Manipulate Dates in PostgreSQL

As we dive into the world of PostgreSQL, it’s essential to understand that handling dates effectively can make all the difference. It’s not just about getting the current date; you might want to manipulate and format these dates too. And this is where PostgreSQL comes in handy with its wide array of date functions.

When it comes to retrieving the current date or timestamp, I often use CURRENT_DATE or CURRENT_TIMESTAMP. These are built-in functions in PostgreSQL which do exactly what their names suggest: they fetch the system’s current date and time information. Here’s an example:




But let’s say you want more control over how your dates appear, well, then you’ll need a bit more than just CURRENT_DATE. For instance, if you fancy formatting your dates according to certain patterns (like ‘YYYY-MM-DD’ or ‘DD-Mon-YYYY’), there’s no better friend than the TO_CHAR function. This powerful tool allows much needed flexibility when dealing with dates.

Here’s a quick demonstration:


This will return today’s date formatted as ‘Day-Month-Year’.

On the flip side though, sometimes you’re handed a string and asked to treat it like a date — that’s where TO_DATE plays its part. Much like its sibling TO_CHAR, this function helps convert strings into legitimate Date type data. Here’s an illustration:

SELECT TO_DATE('05-Dec-2021', 'DD-Mon-YYYY');

That’ll give back December 5th, 2021 as a proper Date type value.

And remember – while using these awesome tools seems straightforward on paper, real life isn’t always so kind! Common mistakes include forgetting to match the format in TO_CHAR and TO_DATE with the actual date or using incorrect syntax. Always double-check your work, it’ll save you a lot of headaches down the line.

So there you have it! A brief overview on some of PostgreSQL’s most commonly used date functions. Stick around, because we’ve got plenty more to cover as we continue exploring this powerful database system!

Case Study: Practical Uses of Getting Current Date in PostgreSQL

Let’s delve into some real-world applications where fetching the current date in PostgreSQL can be a game-changer. One of the common uses is in tracking user activity within an application. Suppose you’re running a bustling online platform, and you want to keep tabs on when each user last logged in. Here’s how you’d do it:

UPDATE users SET last_login = CURRENT_DATE WHERE username = 'johndoe';

With this simple command, PostgreSQL automatically updates the last_login field with today’s date whenever John Doe logs into your platform.

Another handy use-case for getting the current date relates to data analysis. Often, you’ll need to analyze trends over a specific time period – say, sales during the past week or month. The CURRENT_DATE function allows you to filter data dynamically based on today’s date:

SELECT * FROM sales WHERE sale_date >= CURRENT_DATE - INTERVAL '1 week';

This snippet fetches all sales made within the last 7 days from today.

However, I’ve seen many developers make one common mistake – using now() instead of CURRENT_DATE. While both return the present moment, there’s a significant difference:

  • now() gives back both the current date AND time.
  • CURRENT_DATE, as its name suggests, returns only the date.

So if your application needs just dates without timestamps (like birthdates or holidays), stick with CURRENT_DATE.

Lastly, let me share another scenario where getting today’s date comes handy – setting default values while creating new tables or columns:

    order_id serial PRIMARY KEY,
    customer_id INT NOT NULL,

In this table structure for storing orders information, any new row inserted without an explicit order_date will automatically get today’s date as the default value. How cool is that!

Remember, these are just a few examples. The CURRENT_DATE function’s versatility in PostgreSQL makes it an indispensable tool for any developer’s arsenal.

Conclusion: Mastering PostgreSQL Date Functions

I’ve walked you through the process of getting the current date in PostgreSQL, and I hope it’s now a piece of cake for you. Don’t forget, the key function here is CURRENT_DATE. This built-in function makes grabbing today’s date as simple as inputting SELECT CURRENT_DATE; into your SQL query.


However, be aware of some common pitfalls when working with dates in PostgreSQL:

  • Always check your system timezone settings when comparing dates.
  • Be careful with leap years. They can throw off calculations if not taken into account.

By now, you’re well on your way to mastering PostgreSQL date functions. These tools are very powerful and they can greatly simplify the handling of temporal data in your databases. Just remember to keep experimenting and practicing – that’s how we truly absorb knowledge!

As a final note, don’t hesitate to consult official documentation or seek online help if you ever find yourself stuck with a tricky date function problem. The community around PostgreSQL is vibrant and incredibly helpful.

And there you have it! With this guide at your fingertips, extracting the current date from a PostgreSQL database should be no more than a few keystrokes away. Happy querying!

Related articles