我将.csv文件导入SQLite数据库。我试图查询其中一个表。我认为这是挂在日期上的,这些日期是 MM / DD / YYYY 格式。并非所有月份和日期都是两位数。
我尝试过这个问题:
SELECT * FROM <table>
WHERE 'account' = <account_number>
and 'date' between '1900-01-01' and '2013-03-03'
我也试过了:
select * from <table>
where 'account' = <account_number>
and 'date' > '1901-01-01' and 'date' < '2013-03-03'
它不起作用。
答案 0 :(得分:0)
列的名称不应放在单引号中。
select *
from mytable
where account = <account_number>
and date between '1901-01-01' and '2013-03-02'
还请注意between
。
关于日期格式:当然,您应确保使用正确的YYYY-MM-DD格式插入记录。
如果您无法控制导入数据的格式,那么我建议您在导入后应用更正:
update mytable
set date = substr(date, -4) || '-' ||
substr('0' || substr(date, 1, instr(date, '/')-1), -2) || '-' ||
substr('0' || substr(date, instr(date, '/')+1,
length(date)-5-instr(date, '/')), -2)
where date like '_%/_%/____';
这将找到M / D / YYYY格式的任何日期(日期和月份为一位或两位数字),并将年份部分移至开头以获得YYYY-MM-DD格式。如果你确定原始格式是MM / DD / YYYY(而不是DD / MM / YYYY),那么这应该纠正所有这些日期。
查看将此修复程序应用于几个示例日期的this fiddle。