我有一個包含幾列的表,其中我的加入日期是日期型別列,我想查找在 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 獲得月份和年份作為輸入
uj5u.com熱心網友回復:
如果列的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。
請參閱演示。
uj5u.com熱心網友回復:
您應該指定完整的日期,包括日期部分。假設您的日期以以下YYYY-MM-DD格式存盤:
SELECT *
FROM yourTable
WHERE dateA >= '1980-01-01' AND dateA < '1985-07-01';
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/523910.html
下一篇:SSRS和填充運算式
