Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 从sql中的当前日期和未来生效日期提取最近3年的记录_Database_Db2_Db2 400 - Fatal编程技术网

Database 从sql中的当前日期和未来生效日期提取最近3年的记录

Database 从sql中的当前日期和未来生效日期提取最近3年的记录,database,db2,db2-400,Database,Db2,Db2 400,这是我的桌子 cid name dob(timstamp dtype)(dd-mm-yyyy) 101 x 11-02-2015 333 c 22-12-2017 301 y 12-12-2018 901 z 21-07-2019 111 a 02-07-2020 222 b 31-12-9999 333 c 22-12-2025 112 c 21-02-2016 这是我的桌子。我想从当前日期以及未来生效日期提取过去3年的记录。所

这是我的桌子

cid name dob(timstamp dtype)(dd-mm-yyyy)
101  x    11-02-2015
333  c    22-12-2017
301  y    12-12-2018
901  z    21-07-2019
111  a    02-07-2020
222  b    31-12-9999
333  c    22-12-2025
112  c    21-02-2016
这是我的桌子。我想从当前日期以及未来生效日期提取过去3年的记录。所以我的输出应该是

 cid name dob(timstamp dtype)
333  c    22-12-2017............(current year-3)
301  y    12-12-2018............(current year-2)
901  z    21-07-2019............(current year-1)
111  a    02-07-2020.............current year
222  b    31-12-9999.............future year
333  c    22-12-2025.............future year
在mysql上试试这个:

SELECT * FROM table1 WHERE dob > NOW() - INTERVAL 3 YEAR;
如果您想从每天开始获取当前日期,请使用
CURRENT_DATE

如果您只想计算年份:

SELECT * FROM table1 WHERE year(dob) >= year(NOW()) - 3;

对于db2,这应该是正确的语法

 SELECT * FROM table1 WHERE dob > CURRENT DATE - 3 YEARS 
如果您希望从1月1日开始您的假期:

SELECT * FROM table1 WHERE dob > DATE(RTRIM(CHAR(YEAR(CURRENT DATE)-3)) || '-01-01')

仅标记您使用的数据库。Yep。但是你的标签里有mysql。这将适用于mysql。使用第二个查询。DB2也有
year
功能。我还需要过去一年的全部记录……因此,在过去的3年中,它应该从2017年1月1日开始到未来,而现在()不在这里工作。我还需要过去一年的全部记录……因此,在过去的3年中,它应该从2017年1月1日开始到未来