以下列举两种方式在在Oracle中获得日期中的年份,例如把sysdate中的年份取出来。
辽源网站建设公司成都创新互联公司,辽源网站设计制作,有大型网站制作公司丰富经验。已为辽源近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的辽源做网站的公司定做!
1、Select to_number(to_char(sysdate,'yyyy')) from dual
实例代码:
select
to_number(to_char(t.hiredate,'yyyy'))as 入职年,
from emp t;
运行结果:
2、使用Extract函数,Select Extract(year from sysdate) from dual,这种方法省掉了类型转换,
看上去更加简洁。此方法获得的结果,是数值型
实例代码:
select
extract(year from t.hiredate) as入职年,
from emp t ;
运行结果:
扩展资料:
如果想在Oracle中获取日期中的月份,天数。可以将Select to_number(to_char(sysdate,'yyyy'))
from dual改为Select to_number(to_char(sysdate,'MM')) from dual和Select
to_number(to_char(sysdate,'DD')) from dual。
Extract函数中只需将Select Extract(month from sysdate) from dual改为Select Extract(year from sysdate) from dual和Select Extract(day from sysdate) from dual
有一个思路
先用TO_CHAR()把他转换为字符串,然后取前4位和后面的6位,然后对前4位修改好了之后,把两端拼接起来就行,用|| ,然后再用TO_DATE() 弄成 日期型
还有思路
ORACLE里面支持对日期截断的操作,有相关的自带函数的,你可以查一查!
具体操作步骤如下:
1、首先,打开sql,连接到oracle数据库,使用sql语句创建测试表,如下图所示,然后进入下一步。
2、其次,使用sql语句将3行测试数据插入上一步创建的测试表中。使用当前系统时间插入日期字段,如下图所示,然后进入下一步。
3、接着,完成上述步骤后,单击左上角箭头所指“提交”按钮以将更改提交到数据库以保存,如下图所示,然后进入下一步。
4、然后,完成上述步骤后,查询刚刚插入的数据,如下图所示,然后进入下一步。
5、随后,修改第一行中“
Updatedate”字段的值。这时,直接拼接的日期格式的字符串已更新,并且Oracle无法执行,如下图所示,然后进入下一步。
6、接着,修改第一行中“
Updatedate”字段的值,将字符串的版本日期转换为日期类型的权重类型,然后稍后对其进行修改以进行更新,如下图所示,然后进入下一步。
7、最后,修改第一行中Updatedate字段的值,使用当前日期减去一年就可以了,如下图所示。这样,问题就解决了。
UPDATE
表
SET
日期字段 = ADD_MONTHS ( ADD_MONTHS, -12)
WHERE
条件...
也就是 将日期 = 日期 - 12 个月来处理。
如果是 以天来计算的, 就是简单的 + 1 = 加1天, - 1 = 减1天的处理。
这个问题在项目中是一个很重要的细节,具体有两种处理方式,主要取决于这个表是否需要进行数据交换,以及这个时间字段如何使用,具体举两个例子吧:
一、使用varchar2型
1、如果这张表对时间的精度要求不高,比如只是到日。
2、该表需要经常与其他表进行数据交互,比较,查询,并且其他表的时间精度不高于日(比如日、月、季度)
3、存储大量数据用于统计分析,如本期、同期,累计值等。
存储的时候需要格式化,例如:to_char(sysdate,'yyyy-mm-dd');
二、使用date型。
1、对时间精度要求较高,比如到秒;
2、需要与其他表做数据交互,更偏重于”准实时“交互,比如每15秒同步一次数据;
3、不用于统计分析(这点很重要,需要统计分析的话,强烈不建议使用date型);
4、该表数据不做物理删除(删除时只更新标志位和删除时间);
以上我这几年的实际项目经验,希望可以帮到你。