在SqlLite中获取基于月份和年份的两个日期之间的数据



我有一个由几列组成的表,其中我的加入日期是日期类型列,我想找到1980年1月至1985年6月期间加入组织的所有员工[这可能会根据输入而改变],

如果是整个日期部分,我们可以直接将日期放在BETWEEN中,但不确定在只有月份和年份的情况下该怎么办,那么使用strftime将返回字符串值,这些值将不会闲置以放入BETWEEN

预期查询

select * from table where dateA BETWEEN 'YYYY-MM' AND 'YYYY-MM'

我尝试了什么直到

select * from table where (strftime('%Y', dateA) BETWEEN '1980' AND '1985') AND (strftime('%m', dateA) BETWEEN '01' AND '06')

但它没有返回预期的输出

注意:我从API中只得到月和年的输入

如果列的dateA格式是YYYY-MM-DD,而您得到的日期格式是YYYY-MM,那么对于开始日期,您必须连接-01,对于结束日期,使用函数date()和计算月份最后一天的修饰符:

SELECT * 
FROM tablename 
WHERE dateA BETWEEN 
?1 || '-01' 
AND 
date(?2 || '-01', '+1 month', '-1 day');

?1?2替换为YYYY-MM格式的开始日期和结束日期

请参阅演示

最新更新