ORACLE时间函数

SYSDATE:返回系统时间

select sysdate from dual;

CURRENT_DATE:返回会话的时区中的系统日期(可以自己设置会话的时区,以区别于数据库时区)

select current_date from dual;

SYSTIMESTAMP:返回TIMESTAMP格式的系统时间
TIMESTAMP格式是时间戳,可精确到十亿分之一秒,默认精确到0.000001秒。

select systimestamp from dual;

两个时间格式的数据可以直接加减

select holiday,actual_date, celebrated_date
from holiday
where celebrated_date - actual_date != 0;

增加/减少天数,直接加减即可

select sysdate + 1 from dual;

增加/减少月份
add_months(DATE inputdate,NUMBER added_months)

select add_months(celebrated_date,6)
from holiday

select add_months(celebrated_date,-6)
from holiday

通过增加/减少日和月,就可以进行任意时间的加减,1 h = 1/24 , 1 min = 1/24/60 , 1 s = 1/24/60/60
                       1 week = 7 , 1 year = add_months(inputdate,12)

日期和字符串相互转换并格式化
TO_DATE(CHAR str [, CHAR fmt[, ‘NLS_DATE_LANGUAGE=’]])
TO_CHAR(DATE date [, CHAR fmt[, ‘NLS_DATE_LANGUAGE=’]])

select to_char(sysdate - 1/24,'YYYY-MM-DD HH24:mi:ss') from dual;            --这里分钟表示为'MI',虽然写成'MM'可能不报错,但可能会把分钟显示为月份的值,导致数据错误。

select to_char(date '2018-03-05' + 1,'YYYYMMDD') from dual;     

select to_char(to_date('2019-04-16','YYYY-MM-DD'),'DAY') from dual;        --'DAY'表示返回这个日期是星期几。

select to_date('20190416','YYYYMMDD') from dual;

select to_date('2019-04-16 23:25:17','YYYY-MM-DD HH24:MI:SS') from dual;     --这里分钟表示为'MI',不然会和月份的'MM'重复,引起报错 ORA-01810:格式代码出现两次

选择最近/最早的日期

GREATEST(DATE date1,DATE date2)/LEAST(DATE date1,DATE date2)

注意:在处理类似于 ‘16-JAN-12’ 这样的字面值时,GREATEST和LEAST函数会将其视为字符串而不是日期处理,若比较字面值,一定要使用to_date()先转换成日期格式。

select holiday, 
       least(actual_date,celebrated_date) as first,
	   actual_date,
	   celebrated_date
from holiday
where actual_date - celebrated_date != 0;

计算从指定日期开始,下一个’星期几’是哪一天
NEXT_DAY(DATE date,CHAR weekday)

select next_day(cycle_date,'friday') pay_day               --从payday表中的cycle_date列的日期开始数,下一个周五是几月几日。
from payday;

计算指定日期所在月份的最后一天
LAST_DAY(DATE date)

select last_day(cycle_date)
from payday;

计算两个日期之间差几个月
MONTHS_BETWEEN(DATE date1, DATE date2)

select first_name,
       last_name,
	   birthdate,
	   floor(months_between(sysdate,birthdate)/12) as age           --可以计算年龄
from birthday;

你可能感兴趣的:(数据库)