---
title: "PostgreSQL specific database functions"
version: 4.2
locale: en
source: https://docs.djangoproject.com/en/4.2/ref/contrib/postgres/functions/
canonical: https://djangodocs.dev/en/4.2/ref/contrib/postgres/functions/
---
# PostgreSQL specific database functions

All of these functions are available from the
`django.contrib.postgres.functions` module.

## `RandomUUID`

#### `class RandomUUID`

Returns a version 4 UUID.

On PostgreSQL \< 13, the [pgcrypto extension](https://www.postgresql.org/docs/current/pgcrypto.html) must be installed. You can use
the [`CryptoExtension`](/en/4.2/ref/contrib/postgres/operations/#django.contrib.postgres.operations.CryptoExtension) migration
operation to install it.

Usage example:

```pycon
>>> from django.contrib.postgres.functions import RandomUUID
>>> Article.objects.update(uuid=RandomUUID())
```

## `TransactionNow`

#### `class TransactionNow`

Returns the date and time on the database server that the current transaction
started. If you are not in a transaction it will return the date and time of
the current statement. This is a complement to
[`django.db.models.functions.Now`](/en/4.2/ref/models/database-functions/#django.db.models.functions.Now), which returns the date and time of the
current statement.

Note that only the outermost call to [`atomic()`](/en/4.2/topics/db/transactions/#django.db.transaction.atomic)
sets up a transaction and thus sets the time that `TransactionNow()` will
return; nested calls create savepoints which do not affect the transaction
time.

Usage example:

```pycon
>>> from django.contrib.postgres.functions import TransactionNow
>>> Article.objects.filter(published__lte=TransactionNow())
<QuerySet [<Article: How to Django>]>
```
