我想获取日期等于前一天的行,
表模式如下所示,
-- create a table
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
gender TEXT NOT NULL,
xYear INTEGER,
xMonth INTEGER,
xDay INTEGER,
);
--样表--
| 身份证|姓名|性别|x年|x月|x天|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 1个|瑞安|男|二○二三|1个|十二|
| 第二章|乔安娜|F级|二○二三|1个|十二|
| 三个|罗|男|二○二三|1个|十一|
| 四个|汉|F级|二○二三|1个|十二|
| 五个|塔|男|二○二三|1个|十一|
| 六个|运行|F级|二○二三|1个|十一|
| 七|拉达|男|二○二三|1个|十二|
| 八个|塞纳|F级|二○二三|1个|十二|
----预期结果----考虑到今天是1月13日,所以我需要1月12日的数据----
| 身份证|姓名|性别|x年|x月|x天|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 1个|瑞安|男|二○二三|1个|十二|
| 第二章|乔安娜|F级|二○二三|1个|十二|
| 四个|汉|F级|二○二三|1个|十二|
| 七|拉达|男|二○二三|1个|十二|
| 八个|塞纳|F级|二○二三|1个|十二|
不确定如何实现这一点。
2条答案
按热度按时间dy2hfwbg1#
很明显,这是一个不好的DB结构,日期应该作为date存储在一个单列中,而不是将来。
创建所需的结果可以通过从这三列中构建一个日期来实现,然后检查该日期是否为昨天。
有很多函数可以完成这项工作,这里使用
CAST
和CONCAT
的一种方法:您也可以在不使用
CAST
的情况下尝试上述操作,并检查其执行速度是否更快:请在此试用:db<>fiddle
ubof19bj2#
您可以将列连接为字符串,然后将其转换为日期并与“yesterday”进行比较
Demo