Oracle入门精读77-Oracle时间详解(Date类型)

Date类型

用于表示日期和时间的数据类型。

固定占用7个字节。

七个属性世纪  年份  月份  某天 小时

演示

SQL>create table test_date(col_date date);

SQL>insert into test_date

values(to_date('2019-02-08 22:35:00','yyyy-mm-dd hh24:mi:ss'));

显示数据

SQL>select * from test_date

SQL> select to_char(col_date,'yyyy-mm-dd hh24:mi:ss') as NowDate  from test_date;

Date类型的数据存储结构

SQL> select to_char(col_date,'yyyy-mm-dd hh24:mi:ss') as NowDate,dump(col_date)   

from test_date;

长度:占用7个字节

一位到第七位分别:世纪,年,月,日,时,分,秒

世纪:+100来存储

年: +100来存储

月:自然存储.2

日:自然存储.8

时:+1存储

分:+1存储

秒:+1存储

备注:为了支持BC(公元前)和AD(公元)日期,世纪和年份用加100法存储。

对一个Date字段进行操作,需截取到年月日进行比较时,经常使用to_char函数。

select to_char(col_date,'yyyy') as nowYear,to_char(col_date,'mm') as nowYear,

to_char(col_date,'dd') as nowDay

from test_date

另外,要避免对DATE列应用函数

比如,要查询2019年的所有数据,并且这一列上也有索引,希望能够用上这个索引,语句如下:

SQL> select count(col_date) from test_date where col_date >= to_date('2019-01-01','yyyy-mm-dd') and col_date < to_date('2019-12-31','yyyy-mm-dd');

因为to_char日期转换成字符串,利用当前系统所采用的NLS来完成,然后执行一个串与串的比较。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值