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来完成,然后执行一个串与串的比较。