Для SQLite тип данных Date
отсутствует. Как указано в их документации здесь: https://www.sqlite.org/datatype3.html
То, что вы используете как Date
, на самом деле TEXT
.
Вы можете проверить, что:
select typeof(datetime('now'));
возвращает:
text
И:
select typeof(cast(datetime('now') as date));
возвращает:
integer
Таким образом, результат cast('2000-01-01 10:00:00' as date)
является целым числом, и это то же самое целое число, которое вы получаете:
select '2000-01-01 10:00:00' + 0
, когда SQLite неявно преобразует '2000-01-01 10:00:00'
в 2000
, чтобы использовать его вматематическая операция. В случае дат это числовое значение года, но в целом SQLite возвращает самую длинную подстроку TEXT, начиная с 1-го символа, которая может быть представлена как целое число. Так что для '2000-01-01 10:00:00'
это подстрока до 1-го -
, то есть года.