Adventures in Machine Learning

Navigating Time Data: Understanding LOCALTIME and CURRENT_TIME Functions in PostgreSQL

How to Get the Current Time in a PostgreSQL Database

When it comes to working with data, the ability to accurately capture and store the time is essential in many scenarios. From logging events to calculating durations, time data plays a critical role in database management.

In PostgreSQL, there are several approaches to getting the current time, and this article explores how to do just that.

Using the Function LOCALTIME

The first method to consider is using the function LOCALTIME. As the name implies, this function returns the local time of the database server.

Here is an example query:


When executed, this statement returns the current time in ‘HH:MM:SS’ format. Note that the time returned is expressed in the time zone of the server, so it may not match the local time of the user.

Getting the Time Without the Time Zone Offset

If you need to retrieve the time without the time zone offset, you can cast the result of the LOCALTIME function to the ‘time’ data type. Here is an example:


This statement returns the current time in ‘HH:MM:SS’ format without the time zone offset.

Therefore, it is suitable for applications where the time difference between different time zones is irrelevant.

Format of the Function LOCALTIME

Now that you know how to get the current time, it’s time to explore the format of the LOCALTIME function. The returned time includes the hour, minute, second, and fractional seconds.

By default, the fractional seconds have a precision of six digits. However, you can specify the desired precision between one and six using an argument enclosed in brackets.

For example:


This statement returns the current time with a precision of two decimal places. Depending on your use case, you may find it necessary to adjust the precision of the fractional seconds.

Specifying the Precision of the Fractional Seconds

To specify the precision of the fractional seconds, you can pass an argument to the LOCALTIME function in parentheses. This argument should be an integer between one and six to indicate the desired number of decimal places.

For example:


This statement returns the current time with a precision of three decimal places. Note that if you pass an integer greater than six, the function raises an error.


Capturing and storing time data is a critical component of database management. With PostgreSQL, you can use the LOCALTIME function to get the current time easily.

You can customize the output by casting it to the ‘time’ data type or adjusting the precision of the fractional seconds. Armed with this knowledge, you can manage time data effectively and accurately in your PostgreSQL database.

When working with data, time management is crucial in maintaining organization and precision. Databases use various functions and methods to facilitate displaying time data accurately and adequately providing a correct account of events or transactions.

In PostgreSQL, two similar functions are commonly used to return the current time: LOCALTIME and CURRENT_TIME. Although they display the current time in a timestamp format, these two functions differ in how they behave and what they return.

Meaning of LOCALTIME

LOCALTIME is a built-in function in PostgreSQL that returns the current time in the time zone of the database server. It is a powerful function that allows you to capture the time accurately when executing transactions.

For example, if you run multiple INSERT statements, LOCALTIME will capture the time zone of each transaction separately, allowing you to keep track of the exact time at which each transaction occurred. One significant aspect of LOCALTIME is that it can return time data containing time zone offset information.

This feature is useful when the time difference between different time zones is crucial for the application. However, this can sometimes cause confusion for users who are not familiar with the time zone offset notation.

As a result, it is essential to understand how to convert the time zone information to a familiar time format.

Comparison with CURRENT_TIME

CURRENT_TIME is another built-in function in PostgreSQL that returns the current time in the time zone of the database server. Unlike LOCALTIME, CURRENT_TIME does not capture the transaction time, only returning the time zone information at the moment the function was executed.

The main difference between LOCALTIME and CURRENT_TIME is that LOCALTIME is transaction-specific, while CURRENT_TIME is immediate in nature. CURRENT_TIME is often useful in applications that require displaying the current time, such as clock applications or timers.

Both functions generate the same output, but the way in which they work can sometimes cause confusion. To help educate users, here is an example that demonstrates the difference between the two functions:


This query will return two columns: ‘TransactionTime’ and ‘ImmediateTime.’ The first column displays the exact time of the transaction, while the second column displays the current time when the query is executed.

If you execute the query multiple times, the value for ‘TransactionTime’ will change with each transaction, while the value for ‘ImmediateTime’ remains the same. Another note-worthy difference between these two functions is the way DEFAULT and NOT NULL constraints are handled.

When a column of a table is defined as NOT NULL and has a default value of CURRENT_TIME, PostgreSQL updates the column’s value with the CURRENT_TIME value. In contrast, if the column has a DEFAULT value of LOCALTIME, PostgreSQL does not update the column’s value with LOCALTIME.


While both LOCALTIME and CURRENT_TIME return the current time in PostgreSQL, their differences in functionality and output can cause confusion for users. LOCALTIME is transaction-specific, meaning it captures the exact time of a transaction, while CURRENT_TIME is immediate, returning the current time when it is called without capturing the transaction time.

Knowing the difference between these two functions is vital for effectively managing time data in your PostgreSQL database. In summary, the difference between the LOCALTIME and CURRENT_TIME functions in PostgreSQL is essential to understand for effective time management in databases.

While both functions return the current time, they differ in output and functionality. LOCALTIME is transaction-specific, capturing the exact time of a transaction with time zone offset data, while CURRENT_TIME is immediate, returning the current time without capturing transaction time.

This knowledge is crucial to manage time data effectively in your PostgreSQL database. Remembering these critical differences will help you choose the right function for your specific use case.

Popular Posts