【发布时间】:2022-01-04 09:21:12
【问题描述】:
我想为 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,我的应用程序将无法工作
所以我希望我的查询通过一个查询在两个数据库中工作。
【问题讨论】:
-
可悲的是,数据库通常有自己特定的日期 API,它们根本不能相互交换。因此,如果您正在执行复杂的日期操作,您基本上会被供应商特定的代码所困扰。
-
'所以我希望我的查询通过一个查询在两个数据库中工作' - 简短的回答你不能,sql 方言不同,有时很显着。
标签: php mysql sqlite date substring