GBase 8a
适配迁移
文章

GBase 8a函数TRUNCATE()和TRUNC()说明

发表于2025-01-14 14:39:1928次浏览3个评论

TRUNCATE(X,D)
函数说明:返回数值X截取到D位小数后的数字。D为可选参数,默认值为0。
如果D为0,结果将不包含小数点和小数部分。
如果D为负数,表示截去(归零)X值小数点左边第D位开始后面所有低位的值。

示例1:X为“1.223”,小数点后保留一位。
gbase> SELECT TRUNCATE(1.223,1) FROM dual;
+-------------------+
| TRUNCATE(1.223,1) |
+-------------------+
|               1.2 |
+-------------------+
1 row in set
示例2:X为“1.999”,小数点后保留一位。
gbase> SELECT TRUNCATE(1.999,1) FROM dual;
+-------------------+
| TRUNCATE(1.999,1) |
+-------------------+
|               1.9 |
+-------------------+
1 row in set
示例3:D为“0”,返回值不包含小数点和小数部分。
gbase> SELECT TRUNCATE(1.999,0) FROM dual;
+-------------------+
| TRUNCATE(1.999,0) |
+-------------------+
|                 1 |
+-------------------+
1 row in set
示例4:X为“-1.999”,小数点后保留一位。
gbase> SELECT TRUNCATE(-1.999,1) FROM dual;
+--------------------+
| TRUNCATE(-1.999,1) |
+--------------------+
|               -1.9 |
+--------------------+
1 row in set
示例5:D为-2,个位十位归零。
gbase> SELECT TRUNCATE(122,-2) FROM dual;
+------------------+
| TRUNCATE(122,-2) |
+------------------+
|              100 |
+------------------+
1 row in set
示例6:X为表达式。
gbase> SELECT TRUNCATE(10.28*100,0) FROM dual;
+-----------------------+
| TRUNCATE(10.28*100,0) |
+-----------------------+
|                  1028 |
+-----------------------+
1 row in set


TRUNC(date/datetime[, format])
函数说明:TRUNC函数返回以指定元素格式截去一部分的日期值。

date/datetime为必选参数,表示输入的一个日期值。
format可选参数,表示日期格式,用以指定的元素格式来截去输入的日期值。如果省略此参数,则由最近的日期截去。


format支持类型说明
year    返回当年第一天
yyyy    返回当年第一天
month    返回当月第一天
mm    返回当月第一天
dd    返回当天的日期
hh    返回当前时刻0分0秒的日期时间。如果第一个参数是current_date,则返回当天凌晨0点0分0秒的日期,如trunc(current_date,'hh')。
mi    返回当前时刻0秒的日期时间。如果第一个参数是current_date,则返回当天凌晨0点0分0秒的日期,如trunc(current_date,'mi')。

示例1:返回执行当年的第一天。
gbase> SELECT TRUNC(current_date,'year') FROM dual;
+----------------------------+
| TRUNC(current_date,'year') |
+----------------------------+
| 2020-01-01                 |
+----------------------------+
1 row in set
示例2:返回执行当年的第一天。
gbase> SELECT TRUNC(current_date,'yyyy') FROM dual;
+----------------------------+
| TRUNC(current_date,'yyyy') |
+----------------------------+
| 2020-01-01                 |
+----------------------------+
1 row in set
示例3:返回执行当月的第一天。
gbase> SELECT TRUNC(current_date,'mm') FROM dual;
+--------------------------+
| TRUNC(current_date,'mm') |
+--------------------------+
| 2020-04-01               |
+--------------------------+
1 row in set
示例4:返回执行当天的日期。
gbase> SELECT TRUNC(current_date,'dd') FROM dual;
+--------------------------+
| TRUNC(current_date,'dd') |
+--------------------------+
| 2020-04-02               |
+--------------------------+
1 row in set
示例5:返回当时时间到小时精度的日期时间。
gbase> select trunc(current_timestamp,'hh');
+-------------------------------+
| trunc(current_timestamp,'hh') |
+-------------------------------+
| 2023-07-04 17:00:00           |
+-------------------------------+
1 row in set

gbase> select trunc('2023-07-04 13:13:13','hh');
+-----------------------------------+
| trunc('2023-07-04 13:13:13','hh') |
+-----------------------------------+
| 2023-07-04 13:00:00               |
+-----------------------------------+
1 row in set

//current_date会返回0时0分0秒的时间
gbase> SELECT TRUNC(current_date,'hh') FROM dual;
+--------------------------+
| TRUNC(current_date,'hh') |
+--------------------------+
| 2020-04-02 00:00:00      |
+--------------------------+
1 row in set
示例6:返回当时时间到分钟精度的日期时间。
gbase> select trunc('2023-07-04 13:13:13','mi');
+-----------------------------------+
| trunc('2023-07-04 13:13:13','mi') |
+-----------------------------------+
| 2023-07-04 13:13:00               |
+-----------------------------------+
1 row in set

gbase> select trunc(current_timestamp,'mi');
+-------------------------------+
| trunc(current_timestamp,'mi') |
+-------------------------------+
| 2023-07-04 17:11:00           |
+-------------------------------+
1 row in set

//current_date会返回0时0分0秒的时间
gbase> SELECT TRUNC(current_date,'mi') FROM dual;
+--------------------------+
| TRUNC(current_date,'mi') |
+--------------------------+
| 2020-04-02 00:00:00      |
+--------------------------+
1 row in set

评论

登录后才可以发表评论
用户头像
levvel发表于 7个月前
评论是一种尊重
用户头像
levvel发表于 7个月前
值得一读!
GBase用户51884发表于 2个月前
学习了