问题描述:
MySQL数据表以id为主键,存在多列属性值,其中三列属性分别用int型来存储year,month和day。
现在想根据这三列的数据,获得一段时间内的表的数据(从今天往前数五天内的数据)。
其实本可以将年月日等时间信息存放到一个date中,但是根据实际的需求,如果将年月日等时间数据分开存放,可以考虑使用下面的方法。
问题解决:
假设存在一个数据表DateTable,该表中有N多列,M多行数据,id为主键,存在三列int型的数据,分别为year,month,day。
针对原表,创建一个视图view,该视图中只保存两个数据,一个是原表对应的id值,一个是根据原表中的year,month,day生成的date数据
create view v_dateInfo(id,_date) as select id,str_to_date(concat(year,'-',month,'-',day), '%Y-%m-%d‘) from DateTable;
--注释:年月日的格式要写正确了,'%Y-%m-%d‘,第一个是大写,后面都是小写。第一次运行结果返回均为NULL就是因为格式不对。
如上代码就根据表DateTable创建了一个视图v_dateInfo,该视图只有两个数据,一个是id,一个是_date数据值。
接着通过访问视图来获得原表中从今天开始往前数五天的所有数据。代码如下: