重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
SQL ALTER session 2 SET nls_date_format='yyyy-mm-dd hh24:mi:ss';
目前创新互联已为1000+的企业提供了网站建设、域名、虚拟空间、网站托管维护、企业网站设计、宝安网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
会话已更改。
select
TO_DATE( TO_CHAR( EXTRACT(YEAR FROM SYSDATE) + 1 ) || '1231', 'YYYYMMDD' ) AS "第二年年末"
from
dual;
第二年年末
-------------------
2013-12-31 00:00:00
在Oracle中,要获得日期中的年份,例如把sysdate中的年份取出来,并不是一件难事。常用的方法是:Select to_number(to_char(sysdate,'yyyy')) from dual,而实际上,oracle本身有更好的方法,那就是使用Extract函数,使用方法是:Select Extract(year from sysdate) from dual,这种方法省掉了类型转换,看上去更加简洁。相应的,要取得月份或日,可以用select extract (month from sysdate) from dual和select extract (day from sysdate) from dual。
此方法获得的结果,是数值型的,你可以设置一个方法测试一下。
你也不发表结构,只能从理论上说一下。
既然全量表存储的是每天的数据,肯定有记录时间的字段,那就按时间截取部分数据,放到历史表就可以了,比如表名是table,时间字段是create_time,先创建一个历史表
create table table_2018 select * from table where create_time='2018-11-01' and create_time '2019-01-01'
这样就把18年11月、12月的数据存到历史表了,也可以指定具体保存哪个列。
oracle中的date类型字段,截取年份可用to_char函数。
工具:oracle 10g
步骤:
1、如emp表中有hiredate字段为date类型的数据。
2、截取其中的年份部分,用如下语句:
select empno,ename,job,mgr,to_char(hiredate,'yyyy'),sal,comm,deptno from emp;
3、运行后结果,可以看出年份已将截取出来了:
设:
1、数据表名称为:TABLE1
2、TABLE1中的date字段名为:COLUMN1
获取去年到今年的上月底的数据的SQL如下:
select *
from TABLE1 t
where t.COLUMN1 = add_months(trunc(sysdate,'YYYY'),-12)
and t.COLUMN1 trunc(sysdate,'MM')