首页 > 数据库 > 国内数据库 > YashanDB TRUNC函数

TRUNC函数对 expr的值按指定格式截断一个日期值,或按指定位数截断一个数值,返回一个DATE类型的日期值或一个NUMBER类型的数值。
当用于截断日期值时,expr的值必须为DATE、TIMESTAMP类型;当用于截断数值时,expr的值必须为数值型,或可以转换为NUMBER类型的其他类型(转换失败返回Invalid number错误)。
对于其他类型,函数返回类型不支持。
当expr的值为NULL时,函数返回NULL。
fmt
指定日期值的截断格式,规则如下:
| 类型 | 有效格式 | 返回值 | 备注 |
|---|---|---|---|
| Century | CC, SCC | 返回当世纪第一天 | 21世纪第一年为2001年 |
| Year | SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y | 返回当年第一天 |
|
| ISO Year | IYYY, IY, I | 将每年1月4日所处的周作为当年的第一周,返回该周的第一天 | ISO 当年第一天可能是公历前一年12月末 |
| Quarter | Q | 返回当季度第一天 |
|
| Month | MONTH, MON, MM, RM | 返回当月第一天 |
|
| Week | WW | 每年的1月1日作为当年的第一周的第一天,返回当周第一天 | 星期一到星期日都有可能 |
| IW | IW | 星期一为每周的第一天,返回当周第一天 |
|
| W | W | 每月1日作为本月第一周的第一天,返回当周第一天 |
|
| Day | DDD, DD, J | 返回当前日期 |
|
| Start day of the week | DAY, DY, D | 星期日为每周的第一天,返回当周第一天 |
|
| Hour | HH, HH12, HH24 | 返回本小时的开始时间 |
|
| Minute | MI | 返回本分钟的开始时间 |
|
| null | null | null |
|
当不指定fmt时,默认为'DD'。
n
指定数值的截断位数,规则如下:
| n值 | 作用 | 示例 |
|---|---|---|
| 0 | 截断小数部分 | trunc(123.456, 0) -> 123 |
| > 0 且未超出number_expr小数位数 | 截断该小数位数往后的部分 | trunc(123.456, 2) -> 123.45 |
| > 0 且超出number_expr小数位数 | 原数据返回 | trunc(123.456, 5) -> 123.456 |
| 120; trunc(123.456, -2) -> 100 |
|
|
| 0 |
|
|
| 小数 | 正数向下取整,负数向上取整 | trunc(123.456, 1.6) = trunc(123.456, 1); trunc(123.456, -1.2) = trunc(123.456, -1) |
| null | 返回 null |
|
当不指定n时,表示不截断,返回原数据。
示例
TRUNC函数对 expr的值按指定格式截断一个日期值,或按指定位数截断一个数值,返回一个DATE类型的日期值或一个NUMBER类型的数值。
当用于截断日期值时,expr的值必须为DATE、TIMESTAMP类型;当用于截断数值时,expr的值必须为数值型,或可以转换为NUMBER类型的其他类型(转换失败返回Invalid number错误)。
对于其他类型,函数返回类型不支持。
当expr的值为NULL时,函数返回NULL。
fmt
指定日期值的截断格式,规则如下:
| 类型 | 有效格式 | 返回值 | 备注 |
|---|---|---|---|
| Century | CC, SCC | 返回当世纪第一天 | 21世纪第一年为2001年 |
| Year | SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y | 返回当年第一天 |
|
| ISO Year | IYYY, IY, I | 将每年1月4日所处的周作为当年的第一周,返回该周的第一天 | ISO 当年第一天可能是公历前一年12月末 |
| Quarter | Q | 返回当季度第一天 |
|
| Month | MONTH, MON, MM, RM | 返回当月第一天 |
|
| Week | WW | 每年的1月1日作为当年的第一周的第一天,返回当周第一天 | 星期一到星期日都有可能 |
| IW | IW | 星期一为每周的第一天,返回当周第一天 |
|
| W | W | 每月1日作为本月第一周的第一天,返回当周第一天 |
|
| Day | DDD, DD, J | 返回当前日期 |
|
| Start day of the week | DAY, DY, D | 星期日为每周的第一天,返回当周第一天 |
|
| Hour | HH, HH12, HH24 | 返回本小时的开始时间 |
|
| Minute | MI | 返回本分钟的开始时间 |
|
| null | null | null |
|
当不指定fmt时,默认为'DD'。
n
指定数值的截断位数,规则如下:
| n值 | 作用 | 示例 |
|---|---|---|
| 0 | 截断小数部分 | trunc(123.456, 0) -> 123 |
| > 0 且未超出number_expr小数位数 | 截断该小数位数往后的部分 | trunc(123.456, 2) -> 123.45 |
| > 0 且超出number_expr小数位数 | 原数据返回 | trunc(123.456, 5) -> 123.456 |
| 120; trunc(123.456, -2) -> 100 |
|
|
| 0 |
|
|
| 小数 | 正数向下取整,负数向上取整 | trunc(123.456, 1.6) = trunc(123.456, 1); trunc(123.456, -1.2) = trunc(123.456, -1) |
| null | 返回 null |
|
当不指定n时,表示不截断,返回原数据。
示例
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3093168/ ,如需转载,请注明出处,否则将追究法律责任。