目录
oracle日期
sysdate 当前时间
date'2022-07-29' 等于 to_date('2022-07-29','yyyy-mm-dd')
获取当前时间: select sysdate from dual;
1.日期与字符串格式互相转换
日期转字符串格式 :to_char(日期,'yyyy-mm-dd')
字符串转日期格式: to_date('字符串','yyyy-mm-dd hh24:mi:ss')
--日期格式化 ~ 转字符串
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--字符串转日期格式
select to_date('2022-07-29 11:00:00','yyyy-mm-dd hh24:mi:ss') from dual;
--日期格式化 取小时
select to_char(sysdate,'hh24') from dual;
--年月日格式的日期加上时分秒 转日期格式
select to_date( to_char(date'2022-07-29','yyyy-mm-dd')||' 23:59:59' ,'yyyy-mm-dd hh24:mi:ss') from dual;
2. 日期截取函数trunc
trunc用于截取日期或者数值
默认截取到指定日期的0点。
select trunc(sysdate) from dual ;--截取时间到 日 :2022/7/29
select trunc(sysdate)+1/24 from dual ; --当天凌晨1点 2022/7/29 1:00:00
select trunc(sysdate)+1/24/60/60 from dual ; --当前时间加1秒 2022/7/29 0:00:01
select last_day(date'2022-07-29') from dual --7月最后一天
3.日期运算
日期直接数字加减的时候,单位为天,因此,如果要做天以下单位的计算时,需换算下。
如:加一秒:1(天)/24(小时)/60(分钟)/60(秒)
select to_date('2022-07-29 11:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2022-07-29 11:00:00','yyyy-mm-dd hh24:mi:ss')+1/24/60/60 from dual ;
当运算时可能会跨月或者单位为月的时候,使用add_months() 函数
--当前时间加1天 结果: 2022/7/29 9:29:53 2022/7/30 9:29:53
select sysdate,sysdate+1 from dual ;
--当前时间加1小时 2022/7/29 9:31:57 2022/7/29 10:31:57
select sysdate,sysdate+1/24 from dual ;
--当前时间加1分钟 2022/7/29 9:32:57 2022/7/29 9:33:57
select sysdate,sysdate+1/24/60 from dual ;
--日期加一个月 结果:2022/8/29
select Add_Months( to_date('2022-07-29','yyyy-mm-dd'),1) from dual;--日期 减一个月 结果:2022/6/29
select Add_Months( to_date('2022-07-29','yyyy-mm-dd'),-1) from dual;
--两个时间相差 多少分钟 结果:28
select (to_date('2022-07-29 11:00:00','yyyy-mm-dd hh24:mi:ss') - to_date('2022-07-29 10:32:00','yyyy-mm-dd hh24:mi:ss') )*24*60 from dual;
--两个时间相差 多少秒 结果:28
select (to_date('2022-07-29 11:00:00','yyyy-mm-dd hh24:mi:ss') - to_date('2022-07-29 10:32:00','yyyy-mm-dd hh24:mi:ss') )*24*60*60 from dual;
--相差多少天 结果:31
select (date'2022-07-29' - date'2022-06-28' ) from dual