在 MaxCompute 中,有多种格式化相关的函数,下面详细介绍一些常用的格式化函数及其使用方法。
日期时间格式化
DATE_FORMAT 支持将 DATE、TIMESTAMP 和 STRING 类型的数据,转换为指定格式的字符串。本文介绍 DATE_FORMAT 函数的命令格式和使用示例。
命令格式
string date_format(date|timestamp|string <date>, string <format>)
参数说明
set odps.sql.hive.compatible=true;
命令打开 Hive 模式返回值说明
返回 STRING 类型数据。返回规则如下:
- date 值为非 DATE 或 TIMESTAMP 类型时,返回 NULL。
- date 值为 NULL 时,返回报错。
- format 值为 NULL 时,返回 NULL。
示例数据
-- 打开 Hive 模式。与 SQL 语句一起提交 set odps.sql.hive.compatible=true; -- 假设当前时间为 2023-11-20 17:52。返回 2023-11-20 17:52:41.544 select date_format(from_utc_timestamp(current_timestamp(), 'UTC'),'yyyy-MM-dd HH:mm:ss.SSS'); -- 返回 2022-04-24 select date_format('2022-04-24','yyyy-MM-dd');
-- 打开 Hive 模式并开启 2.0 新类型。与 SQL 语句一起提交 set odps.sql.hive.compatible=true; set odps.sql.type.system.odps2=true; select date_format(date'2021-11-29', 'yyyy-MM-dd') ,date_format(datetime'2021-11-29 00:01:00', 'yyyy-MM-dd') ,date_format(timestamp'2021-01-11 00:00:00.123456789', 'yyyy-MM-dd') ,date_format(datetime'2021-11-29 22:01:00', 'yyyy-MM-dd HH:mm:ss') ,date_format(timestamp'2021-01-11 22:30:00.123456789', 'yyyy-MM-dd HH:mm:ss'); +------------+------------+------------+---------------------+---------------------+ | _c0 | _c1 | _c2 | _c3 | _c4 | +------------+------------+------------+---------------------+---------------------+ | 2021-11-29 | 2021-11-29 | 2021-01-11 | 2021-11-29 22:01:00 | 2021-01-11 22:30:00 | +------------+------------+------------+---------------------+---------------------+
-- 打开 Hive 模式。与 SQL 语句一起提交 set odps.sql.hive.compatible=true; select date_format(date'2025-01-01', 'yyyy年MM月dd日') ,date_format(date'2025-01-01', 'yyyy年M月d日'); +----------------+----------------+ | _c0 | _c1 | +----------------+----------------+ | 2025年01月01日 | 2025年1月1日 | +----------------+----------------+
数字格式化
FORMAT_NUMBER 为 MaxCompute 2.0扩展函数,用于格式化数字,使其按照指定的格式显示,通常包括千位分隔符、小数点后的位数等。本文为您介绍 FORMAT_NUMBER 的命令格式、参数说明以及使用示例。
命令格式
string format_number(float|double|decimal <expr1>, <expr2>)
参数说明
- expr1:必填。需要格式化的数据。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING 类型。
- expr2:必填。需要转化的目标格式。指定需要保留小数位数。也可以为类似 #,###,###.## 格式描述。
返回值说明
返回 STRING 类型数据。返回规则如下:
- 如果 expr2>0,则四舍五入到小数点后指定位数。
- 如果 expr2=0,则没有小数点或小数部分。
- 如果 expr2<0,或者 expr2>340,则返回报错。
- expr1 或 expr2 值为 NULL时,返回 NULL。
示例数据
-- 返回 5.230 select format_number(5.230134523424545456, 3); -- 返回 12,332.123 select format_number(12332.123456, '#,###,###,###.###'); -- 返回 NULL select format_number(null, 3);
参考资料
原创文章,转载请注明出处:http://www.opcoder.cn/article/88/