> I think it was a mistake for the SQL standard to require this. Those 3 tokens act like literals in the language, but they are not constants like all other literals; There is actually a reason for it: those constants can be used as default values in column definitions, whereas normal function calls cannot: ```sql sqlite> create table t1(a, b default current_date); sqlite> create table t2(a, b default strftime('%Y','now')); Error: near "(": syntax error sqlite> select strftime('%Y','now'); 2020 sqlite> insert into t1(a) values(1); select * from t1; 1|2020-06-13 ``` Why *those* specific constants are singled out probably boils down to historical behaviour on ancient platforms.