我想為 mysql nad sqlite3 撰寫 sql 兼容性查詢。在 mysql 我寫了一個查詢來獲取當前月份的記錄
so_date 是日期欄位(YYYY-MM-DD)
select so_no,so_date from so_master where MONTH(CURDATE()) = MONTH(so_date) AND YEAR(CURDATE()) = YEAR(so_date);
這在 sqlite3 中不起作用。在sqlite中我可以這樣寫
select so_no,so_date from so_master where strftime('%Y-%m', so_date) = strftime('%Y-%m', 'now');
但是如果我將資料庫(如 mysql)更改為 sqlite3 或將 sqlite3 更改為 mysql,我的應用程式將無法運行
所以我希望我的查詢通過一個查詢在兩個資料庫中作業。
uj5u.com熱心網友回復:
如果您使用函式將日期視為字串SUBSTR()并且CURRENT_DATE這在 MySql 和 SQLite 中很常見,則可以執行此操作:
SELECT so_no, so_date
FROM so_master
WHERE SUBSTR(so_date, 6, 2) = SUBSTR(CURRENT_DATE, 6, 2)
AND SUBSTR(so_date, 1, 4) = SUBSTR(CURRENT_DATE, 1, 4);
或者,更簡單:
SELECT so_no, so_date
FROM so_master
WHERE SUBSTR(so_date, 1, 7) = SUBSTR(CURRENT_DATE, 1, 7);
SQLite和MySql 的演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/368953.html
