Available inDSQL, PSQL, ESQL



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

The optional precision argument is not supported in ESQL.

Table 11.1CURRENT_TIME Parameter


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

CURRENT_TIME returns the current server time. The default is 0 decimals, i.e. seconds precision.

  • CURRENT_TIME has a default precision of 0 decimals, where CURRENT_TIMESTAMP has a default precision of 3 decimals. As a result, CURRENT_TIMESTAMP is not the exact sum of 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_TIME 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 11.14, “'NOW'.

CURRENT_TIME and Firebird 4 time zone support

Firebird 4 will support time zones. As part of this support, there will be an incompatibility with the CURRENT_TIME expression.

In Firebird 4, CURRENT_TIME will return the new TIME WITH TIME ZONE type. In order for your queries to be compatible with database code of future Firebird versions, Firebird 3.0.4 introduced the LOCALTIME expression. In Firebird 3.0, LOCALTIME is a synonym for CURRENT_TIME.

In Firebird 4, LOCALTIME will continue to work as it does now (returning TIME [WITHOUT TIME ZONE]), while CURRENT_TIME will return a different data type, TIME WITH TIME ZONE.

Unless you need to be able to downgrade your database to Firebird 3.0.3 or earlier, we recommend to start using LOCALTIME instead of CURRENT_TIME.


  |select current_time from rdb$database
  |-- returns e.g. 14:20:19.0000
  |select current_time(2) from rdb$database
  |-- returns e.g. 14:20:23.1200

See alsoSection 11.5, “CURRENT_TIMESTAMP, Section 11.11, “LOCALTIME, Section 11.12, “LOCALTIMESTAMP