1、主要用到的函数、表
(1)to_date("要转换的字符串","转换的格式") :两个参数的格式必须匹配,否则会报错。即按照第二个参数的格式解释第一个参数。
(2)to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换。
(3)Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的select语句块中。
2、函数的基本用法
--日期转化为字符串 select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; --获取时间的年 select to_char(sysdate, 'yyyy') as nowYear from dual; --获取时间的月 select to_char(sysdate, 'mm') as nowMonth from dual; --获取时间的日 select to_char(sysdate, 'dd') as nowDay from dual; --获取时间的时 select to_char(sysdate, 'hh24') as nowHour from dual; --获取时间的分 select to_char(sysdate, 'mi') as nowMinute from dual; --获取时间的秒 select to_char(sysdate, 'ss') as nowSecond from dual; --2004-5-7 13:23:44 select to_date('2016-05-29 13:23:44', 'yyyy-mm-dd hh24:mi:ss') from dual;
3、求两个日期的比较
--floor函数:去掉小数的取整 0
select floor(sysdate - to_date('20160529','yyyymmdd')) from dual;
-- 0.859537037037037
select sysdate - to_date('20160529','yyyymmdd') from dual;
4、一年的第几天
--150 2016-5-29 20:42:17
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
5、round[舍入到最接近的日期](day:舍入到最接近的星期日)
select sysdate S1,
round(sysdate) S2 ,
round(sysdate,'year') YEAR,
round(sysdate,'month') MONTH ,
round(sysdate,'day') DAY from dual
6、trunc[截断到最接近的日期,单位为天 ,返回的是日期类型
select sysdate S1,
trunc(sysdate) S2,
trunc(sysdate,'year') YEAR,
trunc(sysdate,'month') MONTH ,
trunc(sysdate,'day') DAY
from dual
7、返回日期列表中最晚日期
select greatest('14-1月-04','16-1月-04','15-2月-04') from dual
8、查找月的第一天,最后一天
SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
FROM dual;