11.14. 'NOW'
Available inDSQL, PSQL, ESQL
TypeCHAR(3)
'NOW'
is not a variable, but a string literal or datetime mnemonic.
It is, however, special in the sense that when you CAST()
it to a date/time type, you will get the current date and/or time.
Since Firebird 2.0 the precision is 3 decimals, i.e. milliseconds. 'NOW'
is case-insensitive, and the engine ignores leading or trailing spaces when casting.
'NOW'
always returns the actual date/time, even in PSQL modules, where Section 11.2, “CURRENT_DATE
”, Section 11.4, “CURRENT_TIME
” and Section 11.5, “CURRENT_TIMESTAMP
” return the same value throughout the duration of the outermost routine. This makes'NOW'
useful for measuring time intervals in triggers, procedures and executable blocks.Except in the situation mentioned above, reading Section 11.2, “
CURRENT_DATE
”, Section 11.4, “CURRENT_TIME
” and Section 11.5, “CURRENT_TIMESTAMP
” is generally preferable to casting'NOW'
. Be aware though thatCURRENT_TIME
defaults to seconds precision; to get milliseconds precision, useCURRENT_TIME(3)
.Firebird 3.0 and earlier allowed the use of
'NOW'
in datetime literals (a.k.a. "`shorthand casts"`), this is no longer allowed in Firebird 4.0.
Examples
|
select 'Now' from rdb$database
|-- returns 'Now'
|
|select cast('Now' as date) from rdb$database
|-- returns e.g. 2008-08-13
|
|select cast('now' as time) from rdb$database
|-- returns e.g. 14:20:19.6170
|
|select cast('NOW' as timestamp) from rdb$database
|-- returns e.g. 2008-08-13 14:20:19.6170