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

最后修改:2023 年 12 月 11 日
如果觉得我的文章对你有用,请随意赞赏