Oracle入门第二课:三个SQL讲清楚Oracle日期函数

1、互转
select 
    sysdate,
    to_char(sysdate, 'yyyymmdd hh24:mi:ss'), --时间转字符串,参数2为转换后的格式
    to_date('20190103','yyyymmdd') ,            --字符串转时间,参数2为字符串的格式
    (to_date('19700101 08:00:00','yyyymmdd hh24:mi:ss') +1647081254000/(1000*60*60*24)),--时间戳转时间
    (sysdate - to_date('1970-01-01 08:00:00', 'yyyy-mm-dd hh24:mi:ss'))*24*60*60*1000 --时间转时间戳(如果系统时间是/分隔,记得格式转换)
from dual;




2、日期获取

select
    ------------------获取当前时间-------------------------------------
    sysdate,--年月日时分秒
    current_date,--年月日时分秒
    systimestamp,--年月日时分秒
    current_timestamp,--年月日时分秒,可以带精度,精度为o—9之间的一个整数,默认为6
    localtimestamp,--年月日时分秒,可以带精度,精度为o—9之间的一个整数,默认为6
    dbtimezone--返回数据库时区 
    to_char(systimestamp, 'yyyymmdd hh24:mi:ss.ff3')--获取三位数秒数时间
    -------------------获取单独的年月日时分秒周数---------------------
    to_char(sysdate,'yyyy'), --获取年份
    to_char(sysdate,'mm'),--获取月份
    to_char(sysdate,'dd'),--获取天数
    to_char(sysdate,'hh24'),--获取小时数
    to_char(sysdate,'mi'),--获取分钟数
    to_char(sysdate,'ss'),--获取秒数
    to_char(sysdate,'day'),--获取星期几
    to_char(sysdate,'ddd'),--获取今年多少天
    to_char(sysdate,'d'),--获取一周第几天
    to_char(sysdate,'w'),--获取是本月第几周(从1号开始每7天周数加1,初始周数01)
    to_char(date'2022-01-03','ww'),--获取本年第几周(从1.1每7天周数加1,初始周数01)
    to_char(date'2022-01-03','iw'),--获取本年一周第几天(从今年第一个周日开始,每每7天周数加1,初始周数01)  
    ------------------------获取短日期---------------------------------------  
    trunc(sysdate),--今天的年月日日期
    trunc(sysdate,'dd'),--今天的年月日日期
    trunc(sysdate,'hh'),--今天的年月日时日期
    trunc(sysdate,'mi'),--今天的年月日时分日期
    ------------------------其他日期获取------------------------------------
    trunc(sysdate,'d'),--本周第一天的年月日日期,周日是一周的开始
    trunc(sysdate,'mm'),--本月第一天的年月日日期
    trunc(sysdate, 'q'),--本季度第一天的年月日日期
    trunc(sysdate,'yyyy')--本年第一天的年月日日期
    trunc(sysdate,'d')+6,--本周最后一天的年月日日期,周日是一周的开始  
    last_day(sysdate),--本月最后一天的年月日日期  
    next_day(sysdate, 1)--下一个星期几(1-7 代表周日到周六,也可以是‘星期几’)
    --以下若使用 sysdate,to_date(),date''等date类型只能获取到年月日,时分秒获取不到--
    --systimestamp,timestamp''等timestamp类型才可以获取到时分秒--
    --date'2022-03-03',timestamp'2022-03-03'必须是当前oracle系统日期格式的字符串--
    extract(year from systimestamp), --获取年份
    extract(month from systimestamp),--获取月份
    extract(day from systimestamp), --获取天数
    extract(hour from systimestamp), --获取小时数
    extract(minute from systimestamp), --获取分钟数
    extract(second from systimestamp)  --获取带小数位的秒数   
from dual;




3、日期移动及差值


select 
       ---------移动方式一,更好----------------------
       sysdate+interval '1' year,--移动一年
       sysdate+interval '1' month, --移动一个月
       sysdate+interval '1' day,--移动一天
       sysdate+interval '1' hour,--移动一小时
       sysdate+interval '1' minute,--移动一分钟
       sysdate+interval '1' second--移动一秒钟 
       ------移动方式二------------------------- 
       sysdate+1*365,--移动一年,当前年份为平年
       sysdate+1*31, --移动一个月,当前月份为大月,小月为28、29、30
       sysdate+1,--移动一天
       sysdate+1/24,--移动一小时
       sysdate+1/24/60,--移动一分钟
       sysdate+1/24/60/60,--移动一秒钟    
       ------其他移动-----------------------------
       add_months(sysdate,1),--移动一个月,负数前移,小数则小数位丢弃
       --------日期差值,其实可以直接两个日期相减得到天数差,然后在换算---------------------------
       date'2022-06-03'-sysdate,--天数差
       months_between(date'2022-03-02',date'2022-02-03') -参1为结束日期,只有天份一致或者都是月底返回整数,其他情况返回天数差/31
       ----------四舍五入---------------------------------
      round(sysdate,'year'),--year或者yy,按**1-6月和7-12月**四舍五入到最近的几几年1月1日
      round(sysdate,'month'),--month或者mm,按**1-15日和16-30日**四舍五入到最近的几月1日
      round(sysdate,'day'),--按**周一到周三和周四到周日**四舍五入到最近的周日
      round(sysdate,'dd'),--如果小时超过12,向前进1
      round(sysdate,'hh'),--如果分超过30,向前进1
      round(sysdate,'mi') --秒数30是分界线,相当于四舍五入的5,如果秒超过30,向前进1      
from dual;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值