Oracle中的日期类型
1,SYSDATE 获取当前系统时间
select SYSDATE from dual;
格式化日期: TO_CHAR(SYSDATE,'YY/MM/DD HH24:MI:SS)
或 TO_DATE(SYSDATE,'YY/MM/DD HH24:MI:SS)
转换的格式:
表示 year 的:y 表示年的最后一位
yy 表示年的最后2位
yyy 表示年的最后3位
yyyy 用4位数表示年
表示month的: mm 用2位数字表示月
mon 用简写形式, 比如11月或者nov
month 用全称, 比如11月或者november
表示day的: dd 表示当月第几天
ddd 表示当年第几天
dy 当周第几天,简写, 比如星期五或者fri
day 当周第几天,全称, 比如星期五或者friday
表示hour的:hh 2位数表示小时 12进制
hh34 2位数表示小时 24小时
表示minute的:mi 2位数表示分钟
表示second的:ss 2位数表示秒 60进制
表示季度的:q 一位数 表示季度 (1-4)
select to_char(sysdate,'q') from dual;
select to_char(sysdate,'Q') from dual;
另外还有ww 用来表示当年第几周 w用来表示当月第几周。
24小时制下的时间范围:00:00:00-23:59:59
12小时制下的时间范围:1:00:00-12:59:59
2,ADD_MONTHS(d,) 将给定的日期增加月份
select sysdate,add_months(sysdate,12) from dual; --加1年
select sysdate,add_months(sysdate,1) from dual; --加1月
select sysdate,add_months(sysdate,-12) from dual; --减1年
select sysdate,add_months(sysdate,-1) from dual; --减1月
3,LAST_DAY(d) 可以返回指定月份的最后一天
select last_day(sysdate) from dual;
4, MONTHS_BETWEEN(d1,d2) 返回两个日期之间的月份
select months_between(sysdate,to_date('2017/12/31','yyyy/mm/dd')) from dual;
5, NEW_TIME(d,tz1,tz2)
d是一个数据类型,当tz1的日期和时间是d时,返回时区tz2中的日期和时间,tz1和tz2都是字符串。
时区1 时区2 说明
AST ADT 大西洋标准时间
BST BDT 白令海标准时间
CST CDT 中部标准时间
EST EDT 东部标准时间
GMT 格林尼治标准时间
HST HDT 阿拉斯加-夏威夷标准时间
MST MDT 山区标准时间
NST 纽芬兰标准时间
PST PDT 太平洋标准时间
YST YDT YUKON标准时间
select to_char(sysdate,'yyyy/mm/dd hh34:mi:ss') 北京
to_char(new_time(sysdate,'PDT','GMT'),'yyyy/mm/dd hh34:mi:ss') 洛杉矶 from dual;
6, NEXT_DAY(d,string)
计算在日期d后满足由string给出的条件的第一天.String使用位置;当前会话的语言指定了一周中的某一天.
返回值的时间分量与d的时间分量是相同的. String的内容可以忽略大小写.
select next_day('17-9月-2012','星期六') next_day from dual;
7, ROUND(d[,format])
将日期d按照由format指定的格式进行处理.如果没有给format则使用缺省设置'DD'.
8, TRUNC(d,format)
计算截尾到由format指定单位的日期d.可以使用位置:格式和效果.缺省参数同ROUNG.
trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒
select to_char(trunc(sysdate,'hh'),'yyyy/mm/dd hh34:mi:ss') HH,
to_char(trunc(sysdate,'mi'),'yyyy/mm/dd hh34:mi:ss') HHMM,
to_char(trunc(sysdate,'dd'),'yyyy/mm/dd hh34:mi:ss') DD,
to_char(trunc(sysdate,'mm'),'yyyy/mm/dd hh34:mi:ss') MM from dual;