SELECT hiredate 日期,
--to_char,转为字符串
to_char(hiredate, 'yyyy') 四位年,--返回1980
to_char(hiredate, 'yyy') 三位年,--返回980
to_char(hiredate, 'yy') 两位年,--返回80
to_char(hiredate, 'mm') 两位月, --返回12
to_char(hiredate, 'mon','NLS_DATE_LANGUAGE = American') 月简称, --返回dec
to_char(hiredate, 'month','NLS_DATE_LANGUAGE = American') 月全称, --返回december
to_char(hiredate, 'ddd') 年内第几天,--返回352
to_char(hiredate, 'dd') 当月第几天,--返回17
to_char(hiredate, 'hh24') "24小时制",
to_char(hiredate, 'hh') "12小时制",
to_char(hiredate, 'mi') 分,
to_char(hiredate, 'ss') 秒,
to_char(hiredate, 'dy','NLS_DATE_LANGUAGE = American') 当周第几天简写,--返回wed
to_char(hiredate, 'day','NLS_DATE_LANGUAGE = American') 当周第几天全写,--返回wednesday
to_char(hiredate, 'D') 当周第几天数字, --返回1-7,周日为1,周六为7
to_char(hiredate, 'q') 季度,--返回4
to_char(hiredate, 'iw') 当年第几周,--返回51,实际周,按照真实的星期几
to_char(hiredate, 'ww') 当年第几周,--返回3,逻辑周,一开始就是7天
to_char(hiredate, 'w') 当月第几周,--返回3,逻辑周,一开始就是7天
--trunc,截断
trunc(hiredate,'year') 年初, --返回当前年的1月1日,无时分秒
trunc(hiredate, 'yy') 年初, --上面的简写
trunc(hiredate,'q'), --返回当前季度的1日,无时分秒
trunc(hiredate,'month') 月初 , --返回当前月的1日,无时分秒
trunc(hiredate, 'mm') 月初, --上面的简写
trunc(hiredate, 'day') 周初, --返回当前周的1日(即星期天),无时分秒
trunc(hiredate) 当前日期, --返回当前日期,无时分秒
trunc(hiredate, 'dd') 一天之始, --跟上面一样
trunc(hiredate,'hh24') 截取到小时, --截取到小时(当前小时,零分零秒)
trunc(hiredate,'mi')截取到分, --截取到分(当前分,零秒)
--round,舍入
round(hiredate,'year') 年的四舍五入, --年的四舍五入以每年6月为基准
round(hiredate,'month') 月的四舍五入, --月的四舍五入以每月的15号为基准
--时间偏移
hiredate + 3/24 "3个小时后",, --更容易使用
hiredate+numtodsinterval(3,'hour') "3个小时后",--把x转为interval day to second数据类型,常用的单位有 ('day','hour','minute','second')
hiredate+numtoyminterval(3,'year') "3年后", --将x转为interval year to month数据类型,常用的单位有'year','month' --跟add_months效果一样
--其他函数
add_months(hiredate,2) 加上2个月, --时间点再加上n个月,含时分秒
last_day(hiredate) 当月月未, --时间点当月份最后一天,含时分秒
next_day(hiredate,6) 下一个星期几的日期, --当前开始下一个星期五,1为周日,7为周六
/* months_between(to_date('2010-02-28', 'yyy-ymm-dd'), to_date('2010-01-27', 'yyyy-mm-dd')) 间隔多少个月 ,*/
--在ORACLE中计算月份的差值,都是月底或是日期相同,都会按整月计算。如果计算结果不是整数,ORACLE会把31作为分母来计算。
--混合使用
add_months(trunc(hiredate, 'mm'),1) 下月初 ,
add_months(trunc(hiredate,'year'), 12) 下年初,
add_months(trunc(hiredate,'year'), 12) - trunc(hiredate,'year') 当年有多少天 ,
last_day(add_months(trunc(hiredate,'y'),1)) 查看是否闰年,
--extract
extract(year from hiredate),--从date类型中截取 year,month,day(date日期的格式为yyyy-mm-dd);
extract(day from systimestamp-to_timestamp(hiredate)) --获取两个日期之间的具体时间间隔,extract函数是最好的选择,可使用day,hour,minute,second , 只能针对timestamp类型使用
FROM (SELECT to_date('1980-12-17 5:20:30','yyyy-mm-dd hh24:mi:ss') AS hiredate FROM dual );
--to_char,转为字符串
to_char(hiredate, 'yyyy') 四位年,--返回1980
to_char(hiredate, 'yyy') 三位年,--返回980
to_char(hiredate, 'yy') 两位年,--返回80
to_char(hiredate, 'mm') 两位月, --返回12
to_char(hiredate, 'mon','NLS_DATE_LANGUAGE = American') 月简称, --返回dec
to_char(hiredate, 'month','NLS_DATE_LANGUAGE = American') 月全称, --返回december
to_char(hiredate, 'ddd') 年内第几天,--返回352
to_char(hiredate, 'dd') 当月第几天,--返回17
to_char(hiredate, 'hh24') "24小时制",
to_char(hiredate, 'hh') "12小时制",
to_char(hiredate, 'mi') 分,
to_char(hiredate, 'ss') 秒,
to_char(hiredate, 'dy','NLS_DATE_LANGUAGE = American') 当周第几天简写,--返回wed
to_char(hiredate, 'day','NLS_DATE_LANGUAGE = American') 当周第几天全写,--返回wednesday
to_char(hiredate, 'D') 当周第几天数字, --返回1-7,周日为1,周六为7
to_char(hiredate, 'q') 季度,--返回4
to_char(hiredate, 'iw') 当年第几周,--返回51,实际周,按照真实的星期几
to_char(hiredate, 'ww') 当年第几周,--返回3,逻辑周,一开始就是7天
to_char(hiredate, 'w') 当月第几周,--返回3,逻辑周,一开始就是7天
--trunc,截断
trunc(hiredate,'year') 年初, --返回当前年的1月1日,无时分秒
trunc(hiredate, 'yy') 年初, --上面的简写
trunc(hiredate,'q'), --返回当前季度的1日,无时分秒
trunc(hiredate,'month') 月初 , --返回当前月的1日,无时分秒
trunc(hiredate, 'mm') 月初, --上面的简写
trunc(hiredate, 'day') 周初, --返回当前周的1日(即星期天),无时分秒
trunc(hiredate) 当前日期, --返回当前日期,无时分秒
trunc(hiredate, 'dd') 一天之始, --跟上面一样
trunc(hiredate,'hh24') 截取到小时, --截取到小时(当前小时,零分零秒)
trunc(hiredate,'mi')截取到分, --截取到分(当前分,零秒)
--round,舍入
round(hiredate,'year') 年的四舍五入, --年的四舍五入以每年6月为基准
round(hiredate,'month') 月的四舍五入, --月的四舍五入以每月的15号为基准
--时间偏移
hiredate + 3/24 "3个小时后",, --更容易使用
hiredate+numtodsinterval(3,'hour') "3个小时后",--把x转为interval day to second数据类型,常用的单位有 ('day','hour','minute','second')
hiredate+numtoyminterval(3,'year') "3年后", --将x转为interval year to month数据类型,常用的单位有'year','month' --跟add_months效果一样
--其他函数
add_months(hiredate,2) 加上2个月, --时间点再加上n个月,含时分秒
last_day(hiredate) 当月月未, --时间点当月份最后一天,含时分秒
next_day(hiredate,6) 下一个星期几的日期, --当前开始下一个星期五,1为周日,7为周六
/* months_between(to_date('2010-02-28', 'yyy-ymm-dd'), to_date('2010-01-27', 'yyyy-mm-dd')) 间隔多少个月 ,*/
--在ORACLE中计算月份的差值,都是月底或是日期相同,都会按整月计算。如果计算结果不是整数,ORACLE会把31作为分母来计算。
--混合使用
add_months(trunc(hiredate, 'mm'),1) 下月初 ,
add_months(trunc(hiredate,'year'), 12) 下年初,
add_months(trunc(hiredate,'year'), 12) - trunc(hiredate,'year') 当年有多少天 ,
last_day(add_months(trunc(hiredate,'y'),1)) 查看是否闰年,
--extract
extract(year from hiredate),--从date类型中截取 year,month,day(date日期的格式为yyyy-mm-dd);
extract(day from systimestamp-to_timestamp(hiredate)) --获取两个日期之间的具体时间间隔,extract函数是最好的选择,可使用day,hour,minute,second , 只能针对timestamp类型使用
FROM (SELECT to_date('1980-12-17 5:20:30','yyyy-mm-dd hh24:mi:ss') AS hiredate FROM dual );