你好,我有一个数据库SQLite,其中有一个表“数据”,列“时间@时间戳”是一个真实的,例如1669729394.792,所以我必须选择一个使用2个日期的数据范围(开始日期和结束日期)由操作员以人工日期时间格式写入(例如2022-11-29)并提取所有数据,我应该将日期从标准格式转换为UNIX时间戳
我试过这样做,但对我不起作用:SELECT * FROM data WHERE date([time@timestamp]) BETWEEN CAST(strftime('%s', '2022-11-29') AS REAL) AND CAST(strftime('%s', '2022-11-30') AS REAL)
1条答案
按热度按时间cdmah0mi1#
函数
date()
带有一个数值参数,但不带修饰符,它将数值视为Julian day,并以文本格式YYYY-MM-DD
返回该日期。但是,您的日期时间值不是儒略日,而是unix timestamps,您可以使用修饰符
'unixepoch'
将它们转换为可读的日期格式YYYY-MM-DD
:之后,您可以直接将结果与
YYYY-MM-DD
的任何日期进行比较,而不需要转换:或者,保持
[time@timestamp]
的值不变,并将2个日期边界转换为unix时间戳:或者,如果您的SQLite版本是3.38.0+: