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.
Note
'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_TIMEdefaults 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
1. select 'Now' from rdb$database
2. -- returns 'Now'
4. select cast('Now' as date) from rdb$database
5. -- returns e.g. 2008-08-13
7. select cast('now' as time) from rdb$database
8. -- returns e.g. 14:20:19.6170
10. select cast('NOW' as timestamp) from rdb$database
11. -- returns e.g. 2008-08-13 14:20:19.6170
