我有一个由几列组成的表,其中我的加入日期是日期类型列,我想找到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
格式的开始日期和结束日期
请参阅演示