GBase 8s TRUNC()函数的用法

TRUNC日期、时间

TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:

TRUNC(date/datetime[,fmt])

其中:
date/datetime 是日期或者日期时间值
fmt 日期格式字符串
对于DATE类型

格式字符串对返回值的影响示例结果
‘YEAR’截断到该年之初。month 和 day 值都为 01TRUNC(DATE(‘2020-05-12’), ‘YEAR’)2020-01-01
‘MONTH’截断到该月之初。day 值为 01TRUNC(DATE(‘2020-05-12’), ‘MONTH’)2020-05-01
‘DD’返回 date 参数的 DATE 值TRUNC(DATE(‘2020-05-12’), ‘DD’)2020-05-12
‘DAY’返回当年星期的第一天(星期日)的日期TRUNC(DATE(‘2020-05-12’), ‘DAY’)2020-05-10
返回 date 参数对应的int值,等同date::intTRUNC(DATE(‘2020-05-12’))43962

对于DATETIME类型

格式字符串对返回值的影响示例结果
‘YEAR’截断到该年之初。month、day、hour 和 minute 值截断到 01-01 00:00TRUNC( DATETIME(2020-05-12 16:15:10) YEAR to SECOND, ‘YEAR’)2020-01-01 00:00:00
‘MONTH’截断到该月的第一天之初。hour 和 minute 值截断到 00:00TRUNC( DATETIME(2020-05-12 16:15:10) YEAR to SECOND, ‘MONTH’)2020-05-01 00:00:00
‘DD’截断到同一天之初(00:00 = 午夜)TRUNC( DATETIME(2020-05-12 16:15:10) YEAR to SECOND, ‘DD’)2020-05-12 00:00:00
‘DAY’返回当年星期的第一天(星期日)的午夜TRUNC( DATETIME(2020-05-12 16:15:10) YEAR to SECOND, ‘DAY’)2020-05-10 00:00:00
‘HH’截断到该小时之初。minute 值截断为零TRUNC( DATETIME(2020-05-12 16:15:10) YEAR to SECOND, ‘HH’)2020-05-12 16:00:00
‘MI’截断到最近的分钟之初。对于所有这些格式字符串,丢弃小于 minute 的时间单位TRUNC( DATETIME(2020-05-12 16:15:10) YEAR to SECOND, ‘MI’)2020-05-12 16:15:00
同等’DD’TRUNC( DATETIME(2020-05-12 16:15:10) YEAR to SECOND)2020-05-12 00:00:00

TRUNC数值

TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下

TRUNC(number[,factor])

其中:
number 待做截取处理的数值
factor 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分

下面是该函数的使用情况:
TRUNC(31.4159, 3) = 31.415
TRUNC(31.4159) = 31
TRUNC(31.4159, -1) = 30

注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。

示例:

-- 今天2020-05-12是当年的第几天
SELECT DATE('2020-05-12') - TRUNC(DATE('2020-05-12'), 'YEAR') FROM DUAL;

结果:132

-- 本周一是哪天(星期天 + 1天)
SELECT TRUNC(DATE('2020-05-12'), 'DAY') + 1 FROM DUAL;

结果:2020-05-11

-- 本周是今年第几周(根据实际需要选择使用CEIL还是TRUNC)
SELECT CEIL((DATE('2020-05-12') - TRUNC(TRUNC(DATE('2020-05-12'), 'YEAR'), 'DAY'))/7) FROM DUAL;

结果:20

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值