13.6. CURRENT_TIMESTAMP

Current server date and time in the session time zone, with time zone information

TypeTIMESTAMP WITH TIME ZONE

⚠
Caution

Data type changed in Firebird 4.0 from TIMESTAMP WITHOUT TIME ZONE to TIMESTAMP WITH TIME ZONE. Use Section 13.13, “LOCALTIMESTAMP” to obtain TIMESTAMP WITHOUT TIME ZONE.

Syntax

CURRENT_TIMESTAMP [ (<precision>) ]
 
<precision> ::= 0 | 1 | 2 | 3

The optional precision argument is not supported in ESQL.

Table 13.2. CURRENT_TIMESTAMP Parameter
ParameterDescription

precision

Precision. The default value is 3. Not supported in ESQL

The default is 3 decimals, i.e. milliseconds precision.

The default precision of Section 13.5, “CURRENT_TIME” is 0 decimals, so CURRENT_TIMESTAMP is not the exact sum of Section 13.2, “CURRENT_DATE” and CURRENT_TIME, unless you explicitly specify a precision (i.e. CURRENT_TIME(3) or CURRENT_TIMESTAMP(0)).

Within a PSQL module (procedure, trigger or executable block), the value of CURRENT_TIMESTAMP will remain constant every time it is read. If multiple modules call or trigger each other, the value will remain constant throughout the duration of the outermost module. If you need a progressing value in PSQL (e.g. to measure time intervals), use Section 13.15, “'NOW'”.

🛑
CURRENT_TIMESTAMP and Firebird Time Zone Support

Firebird 4.0 added support for time zones. As part of this support, an incompatibility with the CURRENT_TIMESTAMP expression was introduced compared to previous versions.

Since Firebird 4.0, CURRENT_TIMESTAMP returns the TIMESTAMP WITH TIME ZONE type. In order for your queries to be compatible with database code of Firebird 4.0 and higher, Firebird 3.0.4 and Firebird 2.5.9 introduced the Section 13.13, “LOCALTIMESTAMP” expression. In Firebird 3.0.4 and Firebird 2.5.9, LOCALTIMESTAMP is a synonym for CURRENT_TIMESTAMP.

In Firebird 6.0, LOCALTIMESTAMP returns TIMESTAMP [WITHOUT TIME ZONE], while CURRENT_TIMESTAMP returns TIMESTAMP WITH TIME ZONE.

Examples

select current_timestamp from rdb$database
-- returns e.g. 2008-08-13 14:20:19.6170
 
select current_timestamp(2) from rdb$database
-- returns e.g. 2008-08-13 14:20:23.1200

See alsoSection 13.5, “CURRENT_TIME”, Section 13.12, “LOCALTIME”, Section 13.13, “LOCALTIMESTAMP”