SQLite Forum

current_date, etc are functions?
Login
> 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.