还是假设有以下表
雇员表s_emp
id name(员工名字) mid(上级领导的id) deptid(部门的id) start_time(入职时间)
1 tom null null 11-2月-09
2 jerry 1 1 23-11月-12
3 hyman 1 2 23-1月-12
4 lily 2 1 06-8月-10
5 jim 2 1 29-11月-13
如,查询tom的入职日期:
select start_time from s_emp where id=1;
结果显示:11-2月-09;
2)该表日期的默认显示格式to_char(日期数据,‘日期格式’);
日期格式有以下:
yyyy:4位年
mm:2位月
dd:2位日
hh24:24小时制
hh12:12小时制
mi:分
ss:秒
day:星期几
mon:英文月缩写
month:英文月全写
pm:上下午(上午am,下午pm)
如,插叙tom的入职日期:
select to_char(start_time,'yyyy-mm-dd,hh24:mi:ss') from s_emp where id=1;
结果 2009-02-09 00:00:00
3)如何存日期
a、按照默认的方式存入
如,insert into s_emp (start_time) values ('27-4月-15');
b、使用sysdate存入系统的当前时间
如,inset into s_emp (start_time) values (sysdate);
c、使用to_date存入制定的时间,to_date把指定的字符串转换成时间
如,insert into s_emp (start_time) values (to_date('2015-04-27 12:10:32','yyyy-mm-dd dd24-mi-ss'));
d、日期的调整
当前时间加1天:
insert into s_emp (start_time) values (sysdate+1);
当前时间加1分
insert into s_emp (start_time) values (sysdate+1/(24*60));/* 1天被分成24小时,每小时被分成60分,加小时、秒数类似*/
当前时间加n个月
insert into s_emp (start_time) values (add_months(sysdate,2));/* 在当前时间之上增加两个月 */
add_months(时间,n);可以实现在该时间的基础之上增加n个月。
计算两个时间点相差多少月
months_between(时间1,时间2);
如,计算tom入职了多少个月
select months_between(sysdate,start_time) from s_emp where id=1;
某个月的最后一天last_day(时间);
如,查看这个月的最后一天:
select to_char(last_day(sysdate),'yyyy-mm-dd') from s_emp;
下一个星期几是什么时间next_day(时间,'星期几');
如,查看下一个星期五是哪天:
select to_char(next_day(sysdate,'friday'),'yyyy-mm-dd') from s_emp;
对日期的四舍五入和截取
四舍五入round(时间,'四舍五入单位');若‘四舍五入单位‘缺省,默认按照天进行四舍五入
如,按照月对当前的时间进行四舍五入,
select to_char(round(sysdate,'mm')) from s_emp;如当前时间是2015年4月27日,则四舍五入后的日期为:2015年5月1日
截取 trunc(时间,'截取单位');若‘截取单位‘缺省,默认按照天进行截取
如,按照月对当前的时间进行截取,
select to_char(trunc(sysdate,'mm')) from s_emp;如当前时间是2015年4月27日,则截取后的日期为:2015年4月1日
如,要创建s_emp表:
create table s_emp(id number,name varchar2(30),mid number,deptid number,start_time date);
如,要删除s_emp表
drop table s_emp;
雇员表s_emp
id name(员工名字) mid(上级领导的id) deptid(部门的id) start_time(入职时间)
1 tom null null 11-2月-09
2 jerry 1 1 23-11月-12
3 hyman 1 2 23-1月-12
4 lily 2 1 06-8月-10
5 jim 2 1 29-11月-13
一、create语句用于创建一个table
1、oracle中的数据类型
(1)数字类型number
(2)变长字符串类型varchar2(n)
n即为可变的最大的字符串的长度,如varchar2(20),表示字符串串最多20个字符。(3)定长字符串类型char(n)
n表示定长字符串的长度,如char(20)表示字符串含有20个字符,不足20个用空格补齐。(4)时间类型date
1)日期默认的表现形式:DD-MM-YY,即日-月-年,年是双位。如要表示2015年4月27日,则oracle会默认显示成27-4月-15;如,查询tom的入职日期:
select start_time from s_emp where id=1;
结果显示:11-2月-09;
2)该表日期的默认显示格式to_char(日期数据,‘日期格式’);
日期格式有以下:
yyyy:4位年
mm:2位月
dd:2位日
hh24:24小时制
hh12:12小时制
mi:分
ss:秒
day:星期几
mon:英文月缩写
month:英文月全写
pm:上下午(上午am,下午pm)
如,插叙tom的入职日期:
select to_char(start_time,'yyyy-mm-dd,hh24:mi:ss') from s_emp where id=1;
结果 2009-02-09 00:00:00
3)如何存日期
a、按照默认的方式存入
如,insert into s_emp (start_time) values ('27-4月-15');
b、使用sysdate存入系统的当前时间
如,inset into s_emp (start_time) values (sysdate);
c、使用to_date存入制定的时间,to_date把指定的字符串转换成时间
如,insert into s_emp (start_time) values (to_date('2015-04-27 12:10:32','yyyy-mm-dd dd24-mi-ss'));
d、日期的调整
当前时间加1天:
insert into s_emp (start_time) values (sysdate+1);
当前时间加1分
insert into s_emp (start_time) values (sysdate+1/(24*60));/* 1天被分成24小时,每小时被分成60分,加小时、秒数类似*/
当前时间加n个月
insert into s_emp (start_time) values (add_months(sysdate,2));/* 在当前时间之上增加两个月 */
add_months(时间,n);可以实现在该时间的基础之上增加n个月。
计算两个时间点相差多少月
months_between(时间1,时间2);
如,计算tom入职了多少个月
select months_between(sysdate,start_time) from s_emp where id=1;
某个月的最后一天last_day(时间);
如,查看这个月的最后一天:
select to_char(last_day(sysdate),'yyyy-mm-dd') from s_emp;
下一个星期几是什么时间next_day(时间,'星期几');
如,查看下一个星期五是哪天:
select to_char(next_day(sysdate,'friday'),'yyyy-mm-dd') from s_emp;
对日期的四舍五入和截取
四舍五入round(时间,'四舍五入单位');若‘四舍五入单位‘缺省,默认按照天进行四舍五入
如,按照月对当前的时间进行四舍五入,
select to_char(round(sysdate,'mm')) from s_emp;如当前时间是2015年4月27日,则四舍五入后的日期为:2015年5月1日
截取 trunc(时间,'截取单位');若‘截取单位‘缺省,默认按照天进行截取
如,按照月对当前的时间进行截取,
select to_char(trunc(sysdate,'mm')) from s_emp;如当前时间是2015年4月27日,则截取后的日期为:2015年4月1日
2、创建表
create table 表名字(字段1 字段类型,字段2 字段类型,...);如,要创建s_emp表:
create table s_emp(id number,name varchar2(30),mid number,deptid number,start_time date);
二、删除表
drop table 表名字;如,要删除s_emp表
drop table s_emp;