接上一篇
三、Oracle中的时间类型
在日常的简单使用中,对于时间字段的操作比较多,一定会遇到需要删改查特定时间范围的数据,所以对时间字段先来了解一下
1、在Oracle中存储时间的格式不同,分为:
1)Char字符类型存储的时间,存储的只为日期。
如果要查询的时间为Char类型可以直接将条件写成
A. Where PLAT_DATE between '20170110' and '20170120';
B. Where PLAT_DATE> '20170101';
2)date日期类型存储的时间
存储的日期时间精确到秒。如果要区分哪一个事件先发生,有的时候精确到秒也无法判断,因此在Date数据类型上扩展出来了TIMESTAMP数据类型。
查询date类型条件语句可以下成一下几种情况:
A. wherecreate_time > to_date('20190529','yyyymmdd');
B. where create_time between to_date('20190110','yyyymmdd') and to_date('20190120','yyyymmdd');
C. where to_char(create_time,'yyyymmdd')
between '20190110' and '20190120';
D. where create_time > = to_date('20190529','yyyymmdd')
and create_time <to_date('20190629','yyyymmdd');
3) TIMESTAMP时间戳数据类型
存储的数据包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息。
同date类型,转换成同一个字段类型才能进行比较
2、查询结果中的时间字段样式可以自己定义,如下
select create_time from tablename where create_time > =to_date('20190529','yyyymmdd');
select to_char(create_time,'yyyy-mm-dd') as c_time from tablename
where create_time > =to_date('20190529','yyyymmdd');
select to_char(create_time,'yyyy-mm-dd HH24:MI:SS') as c_time from tablename
where create_time > =to_date('20190529','yyyymmdd')
3、时间进行分组、排序、统计数量。
select to_char(create_time,'yyyy-mm-dd HH24:MI:SS') asc_time,
count(1) as date_num –统计数据量
from tablename
where create_time > =to_date('20190529','yyyymmdd')
group by to_char(create_time,'yyyy-mm-dd HH24:MI:SS') –时间分组
order by to_char(create_time,'yyyy-mm-dd HH24:MI:SS')