Oracle trunc()函数
侧边栏壁纸
  • 累计撰写 116 篇文章
  • 累计收到 412 条评论

Oracle trunc()函数

萧瑟
2022-05-02 / 6 评论 / 24 阅读 / 正在检测是否收录...

功能描述

用于截取时间或者数值,返回指定的值。

语法

(1)日期处理:

TRUNC(date,[fmt])
--  date 为必要参数,是输入的一个date日期值
--  fmt 参数可忽略,是日期格式,缺省时表示指定日期的0点。

(2)数值处理:

TRUNC(number,[decimals])
--  number 为必要参数,是输入的一个number数值
--  decimals 参数可忽略,是要截取的位数,缺省时表示截掉小数点后边的值。

例子

(1)处理日期:

--sysdate和trunc(sysdate)是不一样的 sysdate在当天的零时零分零秒等于trunc(sysdate)
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
       to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss')
  from dual t;
 
--年
select trunc(sysdate, 'yy') "当年第一天" from dual;
select trunc(sysdate, 'yyyy') "当年第一天" from dual;
select trunc(sysdate, 'year') "当年第一天" from dual;
--季度
select trunc(sysdate, 'q') "当前季度的第一天" from dual;
select trunc(add_months(sysdate,3), 'Q') -1/24 "这个季度最后一天23点" from dual; 
--月
select trunc(sysdate, 'mm') "当月第一天" from dual;
select trunc(sysdate, 'month') "当月第一天" from dual;
select trunc(last_day(sysdate)+1) "下个月第一天的0点" from dual;
--周
select trunc(sysdate, 'd') "本周的第一天,周日起" from dual; 
select trunc(sysdate,'day') "本周的第一天,周日起" from dual; 
select next_day(TRUNC(SYSDATE ), 'TUESDAY' ) + 12/24 "下个星期二中午12点" from dual;
select TRUNC(LEAST(NEXT_DAY(SYSDATE, 'SATURDAY'), NEXT_DAY(SYSDATE, 'SUNDAY'))) + (6*60+10)/(24*60) "下个周六日早上6点10分" from dual;
--天
select trunc(sysdate+1) "今晚12点" from dual;
select trunc(sysdate+1) + (8*60+30)/(24*60) "明天早上8点30分" from dual;
--时
select trunc(sysdate, 'hh')"当前小时" from dual;  
select trunc(sysdate, 'hh24') "当前小时" from dual; 
--分
select trunc(sysdate, 'mi') "当前分钟" from dual;
select trunc(sysdate,'mi') + 10/ (24*60) "10分钟后的时间"from dual; 
--秒
select sysdate + 10/(24 * 60 * 60) "10秒钟后" from dual;--trunc没有精确到秒的精度

(2)处理数值:

--123.56,将小数点右边指定位数后面的截去; 
select trunc(123.567,2) from dual;
--100,第二个参数可以为负数,表示将小数点左边指定位数后面的部分截去,即均以0记;
select trunc(123.567,-2) from dual;
--123,默认截去小数点后面的部分;
select trunc(123.567) from dual;
0

评论 (6)

取消
  1. 头像
    小王先森
    中国贵州省铜仁市碧江区 Windows 10 · Google Chrome

    你写的文章越来越专业了,我阅读起来很吃力。

    回复
    1. 头像
      萧瑟 作者
      中国北京市昌平区 Windows 10 · Google Chrome
      @ 小王先森

      专业也代表着工作时间越长。表情

      回复
  2. 头像
    鸟叔
    中国山西省长治市 Windows 7 · Google Chrome

    鸟叔来串门,通过虫洞穿梭至此,期待回访!

    回复
    1. 头像
      萧瑟 作者
      中国北京市昌平区 Windows 10 · Google Chrome
      @ 鸟叔

      欢迎鸟叔,只是没留链接,可让我好找贵站地址,贵站好像有点被墙了,我这边需要特殊网络才能访问贵站。表情

      回复
      1. 头像
        鸟叔
        中国山西省长治市 Windows 7 · Google Chrome
        @ 萧瑟

        不需要特殊网络,我的站点没有被墙,我用电信 移动 联通都可以打开,不知道你用的是什么网络,我用的是cf,可能部分网络不太友好

        回复
        1. 头像
          萧瑟 作者
          中国北京市昌平区 Windows 10 · Google Chrome
          @ 鸟叔

          我这边宽带是小运营商,一会联通一会移动,CF晚上访问速度可能真的太感人了。

          回复