日期和字符转换函数用法
日期转化为字符串
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;
字符串转换成日期
select to_date('2017-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual
获取当前日期
select sysdate from dual;
求某天是星期几
select to_char(to_date('2017-06-06','yyyy-mm-dd'),'day') from dual;
结果是星期二,如果想改变显示语言,比如英语
select to_char(to_date('2017-06-06','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
结果是:tuesday
求两个日期间的天数
select floor(sysdate - to_date('20070405','yyyymmdd')) from dual;
求两个日期间的月份数
MONTHS_BETWEEN (x, y)用于计算x和y之间有几个月
如果x在日历中比y早,那么MONTHS_BETWEEN()就返回一个负数
当x 和 y 之间的月份之差不是整月的时候,可以采用小数表示
select months_between(to_date('01-31-2018','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
Next_day(date,char)
用于计算x时间后第一个星期y的时间,date参数为日期型, char:为1~7或Monday/Mon~Sunday/,还可以是星期一、星期二。。。星期日
select next_day(sysdate,'星期日') from dual;
注意:1表示星期日,2代表星期一……
一年中的第几天
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
两个日期之间的小时数
select (sysdate-to_date('2017-06-06 12:00:00','yyyy-mm-dd hh24:mi:ss'))*24 from dual
舍入到最接近的日期
select sysdate S1,
round(sysdate) S2,
round(sysdate, 'year') YEAR,
round(sysdate, 'month') MONTH,
round(sysdate, 'day') DAY
from dual;
注意:day是舍入到最接近的星期日
所以上面的结果应该是
S1:2017/6/6 15:32:00
S2:2017/6/7
YEAR:2017/1/1
MONTH:2017/6/1
DAY:2017/6/4
获取月的第一天,最后一天
SELECT
Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
FROM dual;
获取最后指定日期所在月份的最后一天
SELECT LAST_DAY(HIREDATE) FROM EMP;
获取某年有多少天
select add_months(trunc(to_date('2004-01-10', 'yyyy-mm-dd'), 'year'), 12) -
trunc(to_date('2004-01-01', 'yyyy-mm-dd'), 'year')
from dual
截取年月日
截取当前时间的年份
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
截取月份
SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;
截取日期
SELECT EXTRACT(DAY FROM SYSDATE) FROM DUAL;