您可以在ADB_PG_SQL任务中使用日期函数对指定字符串进行灵活处理。本文为您提供ADB_PG_SQL任务支持的数学函数的命令格式、参数说明及示例,指导您使用字符串函数完成开发。
AnalyticDB for PostgreSQL支持的字符串函数如下。
| 函数 | 功能 | 
| 减去参数,产生一个使用年和月的“符号”结果,而不仅仅是天。 | |
| 从当前日期中减去相应日期。 | |
| 当前日期和时间(语句执行期间的更改)。 | |
| 当前日期。 | |
| 当前时间。 | |
| 当前日期和时间(当前交易的开始)。 | |
| 获取子字段(相当于extract)。 | |
| 截断到指定的精度。 | |
| 截断到指定的精度。 | |
| 获取子字段。 | |
| 获取子字段。 | |
| 测试有限日期 (not +/-infinity)。 | |
| 测试有限时间戳 (not +/-infinity)。 | |
| 有限区间测试。 | |
| 调整间隔,使 30 天的时间段表示为月。 | |
| 调整间隔,使 24 小时时间段以天数表示。 | |
| 使用 justify_days 和 justify_hours 调整间隔,并进行额外的符号调整。 | |
| 当前时间。 | |
| 当前日期和时间(当前事务的开始)。 | |
| 从年月日字段创建日期。 | |
| 从年、月、周、日、小时、分钟和秒字段创建间隔。 | |
| 从小时、分钟和秒字段创建时间。 | |
| 从年、月、日、小时、分钟和秒字段创建时间戳。 | |
| 从年、月、日、小时、分钟和秒字段创建带时区的时间戳。如果未指定时区,则使用当前时区。 | |
| 当前日期和时间(当前交易的开始)。 | |
| 当前日期和时间(当前语句的开始)。 | |
| 当前日期和时间(类似于 clock_timestamp,但作为文本字符串)。 | |
| 当前日期和时间(当前交易的开始)。 | 
age
- 命令格式 
age(timestamp, timestamp)- 命令说明:减去参数,产生1个使用年和月的“符号”结果,而不仅仅是天。 
- 参数说明: - timestamp:必填。要计算的日期。 - timestamp:必填。日期。 
- 返回值说明:函数根据指定的日期减去参数,返回1个使用年和月的“符号”结果。 
- 示例: - SELECT age(timestamp '2010-02-02', timestamp '2001-01-01'); --返回9 years 1 mon 1 day
age
- 命令格式 
age(timestamp)- 命令说明:从当前日期中减去相应日期。 
- 参数说明: - timestamp:必填。要计算的日期。 
- 返回值说明:当前日期中减去相应日期,函数返回一个整数数字。 
- 示例: - SELECT age(timestamp '1996-05-02'); --返回21 years 4 mons 12 days
clock_timestamp
- 命令格式 
clock_timestamp()- 命令说明:当前日期和时间(语句执行期间的更改)。 
- 返回值说明:函数返回一个带有时区信息的日期和时间,它是此函数执行时的系统日期和时间。 
- 示例: - SELECT clock_timestamp(); --返回2023-01-03 15:38:44.332799
current_date
- 命令格式 
current_date- 命令说明:当前的系统日期。 
- 返回值说明:函数返回当前的系统日期,格式为 - YYYY-MM-DD。
- 示例: - SELECT current_date; --返回2023-01-03
current_time
- 命令格式 
current_time- 命令说明:当前系统时间。 
- 返回值说明:数返回带有时区信息的系统时间,格式为 - HH:MI:SS.ssssss{+|-}ZZ。
- 示例: - SELECT current_time; --返回20:37:44.688689+03
current_timestamp
- 命令格式 
current_timestamp- 命令说明:当前日期和时间(所属事务开始的时间)。 
- 返回值说明:函数返回当前的日期和时间(所属事务开始的时间)。 
- 示例: - SELECT current_timestamp; --返回2023-01-01 15:55:37.222601+03
date_part
- 命令格式 
date_part(text, timestamp)- 命令说明:获取子字段(相当于extract)。 
- 参数说明: - text:必填。字符串,表示要抽取的部分。 - timestamp:必填。可以是时间戳、日期、时间或者间隔类型。 
- 返回值说明:函数返回从timestamp返回通过字符串text指定的部分。 
- 示例: - SELECT date_part('century', TIMESTAMP '2023-01-01 12:41:13.662522'); --返回21
date_trunc
- 命令格式 
date_trunc(text, timestamp)- 命令说明:截断到指定的精度。 
- 参数说明: - string:必填。 1个表示要截取的字符串。 
- 返回值说明:函数将一个指定的时间截断到指定的部分并返回。 
- 示例: - SELECT date_trunc('year', TIMESTAMP '2023-01-01 12:41:13.662522'); --返回2023-01-01 00:00:00.0
date_trunc
- 命令格式 
date_trunc(text, interval)- 命令说明:截断到指定的精度,截断一个间隔类型的值。 
- 参数说明: - string:必填。 1个表示要截取的字符串。 
- 返回值说明:函数将一个指定的间隔值截断到指定的部分并返回。 
- 示例: - SELECT date_trunc('hour', INTERVAL '1 days 20:10:10'); --返回1 day 20:00:00
extract
- 命令格式 
extract(field from timestamp)- 命令说明:获取子字段。 
- 参数说明: - field:必填。1个表示要截取的字符串。 - timestamp:必填。1个时间戳。 
- 返回值说明:函数将一个指定的时间戳或间隔值截断到指定的部分并返回。 
- 示例: - SELECT extract(CENTURY FROM TIMESTAMP '2023-01-01 12:41:13.662522'); --返回21
extract
- 命令格式 
extract(field from interval)- 命令说明:获取子字段。 
- 参数说明: - field:必填。1个表示要截取的字符串。 - timestamp:必填。1个间隔值。 
- 返回值说明:函数将一个指定的时间戳或间隔值截断到指定的部分并返回。 
- 示例: - SELECT extract(DAY FROM INTERVAL '2 days 10 minutes'); --返回2
isfinite
- 命令格式 
isfinite(date)- 命令说明:测试有限日期 (not +/-infinity)。 
- 参数说明: - string:必填。 1个需要计算位数的字符串。 
- 返回值说明:函数返回一个整数数字,它代表了给定字符串的位数。 
- 示例: - SELECT isfinite(DATE '2023-01-01'); --返回t
isfinite
- 命令格式 
isfinite(timestamp)- 命令说明:测试有限时间戳 (not +/-infinity)。 
- 参数说明: - timestamp:必填。 要检测的时间戳值。 
- 返回值说明:函数返回一个布尔值,它指示了检测一个给定的日期、时间戳或间隔值是否是一个有限大的值。 
- 示例: - SELECT isfinite(TIMESTAMP '2023-01-01 12:41:13.662522'); --返回t
isfinite
- 命令格式 
isfinite(interval)- 命令说明:测试有限间隔值 (not +/-infinity)。 
- 参数说明: - interval:必填。 要检测的间隔值。 
- 返回值说明:函数返回一个布尔值,它指示了检测一个给定的日期、时间戳或间隔值是否是一个有限大的值。 
- 示例: - isfinite(INTERVAL '2 days 10 minutes'); --返回t
justify_days
- 命令格式 
justify_days(interval)- 命令说明:调整间隔,使 30 天的时间段表示为月。 
- 参数说明: - interval:必填。要转换的间隔值。 
- 返回值说明:函数返回一个整数数字,它代表了给定字符串的位数。 
- 示例: - SELECT justify_days(INTERVAL '20 days'); --返回20 days
justify_hours
- 命令格式 
justify_hours(interval)- 命令说明:调整间隔,使 24 小时时间段以天数表示。 
- 参数说明: - interval:必填。要转换的间隔值。 
- 返回值说明:函数转换时间间隔的表示方法,将超过 24 小时的小时数转为天数。 如果给定的间隔值小于 24 天,则不做任何转换。 
- 示例: - SELECT justify_hours(INTERVAL '20 hours'); --返回20:00:00
justify_interval
- 命令格式 
justify_interval- 命令说明:使用justify_days和justify_hours调整间隔,并进行额外的符号调整。 
- 参数说明: - string:必填。要转换的间隔值。 
- 返回值说明:函数转换时间间隔的表示方法,将超过 24 小时的小时数转为天数,并且将超过 30 天的天数转为月数。 
- 示例: - SELECT justify_interval(INTERVAL '6000 hours'); --返回8 mons 10 days
localtime
- 命令格式 
localtime- 命令说明:当前时间。 
- 返回值说明:函数返回当前的系统时间,格式为 HH:MM:SS.ssssss。 
- 示例: - SELECT localtime; --返回64
localtimestamp
- 命令格式 
localtimestamp- 命令说明:当前日期和时间(当前事务的开始)。 
- 返回值说明:函数返回该函数所属的事务开始时的系统日期和时间。 
- 示例: - SELECT localtimestamp; --返回16:43:04.582222
make_date
- 命令格式 
make_date(year, month, day)- 命令说明:从年月日字段创建日期。 
- 参数说明: - year:年份的整数。 - month:月份的整数。 - day:天的整数。 
- 返回值说明:函数返回一个日期值,它由给定的年、月、日字段创建而来。如果年份为负数,则表示日期处于公元前。 
- 示例: - SELECT make_date(2023, 01, 01); --返回2023-01-01
make_interval
- 命令格式 
make_interval- 命令说明:从年、月、周、日、小时、分钟和秒字段创建间隔。 
- 返回值说明:函数返回一个间隔值,它由给定的年、月、日、时、分、秒字段创建而来。 
- 示例: - SELECT make_interval(1, 2, 3, 4, 5, 6, 1.123); --返回1 year 2 mons 25 days 05:06:01.123
make_time
- 命令格式 
make_time(hour, minute, second)- 命令说明:从小时、分钟和秒字段创建时间。 
- 参数说明: - hour:必填。 小时的整数。 - string:必填。 分钟的整数。 - second:必填。秒的双精度浮点数。 
- 返回值说明:函数返回一个时间值,它由给定的时、分、秒字段创建而来。 
- 示例: - SELECT make_time(20, 55, 25.517606); --返回20:55:25.517606
make_timestamp
- 命令格式 
make_timestamp(year, month, day, hour, minute, second)- 命令说明:从年、月、日、小时、分钟和秒字段创建时间戳。 
- 参数说明: - year:必填。年份的整数。 - month:必填。月份的整数。 - hour:必填。 小时的整数。 - string:必填。 分钟的整数。 - second:必填。秒的双精度浮点数。 
- 返回值说明:函数返回一个时间戳值,它由给定的年、月、日、时、分、秒字段创建而来。如果年份为负数,则表示日期处于公元前。 
- 示例: - SELECT make_timestamp(2023, 01, 01, 20, 55, 25.517606); --返回2023-01-01 20:55:25.517606
make_timestamptz
- 命令格式 
make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])- 命令说明:从年、月、日、小时、分钟和秒字段创建带时区的时间戳。如果未指定时区,则使用当前时区。 
- 参数说明: - year:必填。年份的整数。 - month:必填。月份的整数。 - hour:必填。 小时的整数。 - string:必填。 分钟的整数。 - second:必填。秒的双精度浮点数。 - timezone:可选。时区的字符串。默认值为当前的时区。 
- 返回值说明:函数返回一个带有时区信息的时间戳值,它由给定的年、月、日、时、分、秒、时区字段创建而来。如果年份为负数,则表示日期处于公元前。 
- 示例: - SELECT make_timestamptz(2023, 01, 01, 20, 55, 25.517606); --返回2023-01-01 20:55:25.517606+08
now
- 命令格式 
now()- 命令说明:当前日期和时间(所属的事务开始时的系统日期和时间)。 
- 返回值说明:函数返回一个带有时区信息的日期和时间,它是该函数所属的事务开始时的系统日期和时间。 
- 示例: - SELECT now(); --返回2023-01-03 16:05:27.182015
statement_timestamp
- 命令格式 
statement_timestamp()- 命令说明:当前日期和时间(当前语句的开始)。 
- 返回值说明:函数返回一个带有时区信息的日期和时间,它是该函数所在的语句开始执行时的系统日期和时间。 
- 示例: - SELECT statement_timestamp(); --返回2023-01-03 16:08:27.273888
timeofday
- 命令格式 
timeofday()- 命令说明:当前日期和时间(类似于 clock_timestamp,但作为文本字符串)。 
- 返回值说明:函数返回一个字符串,它表示此函数执行时的系统日期和时间,并带有时区信息。 
- 示例: - SELECT timeofday(); --返回Tue Jan 03 16:08:09.228504 2023 CST
transaction_timestamp
- 命令格式 
transaction_timestamp()- 命令说明:当前日期和时间(所属的事务开始时的系统日期和时间)。 
- 返回值说明:函数返回一个带有时区信息的日期和时间,它是该函数所属的事务开始时的系统日期和时间。 
- 示例: - SELECT transaction_timestamp(); --返回2023-01-03 16:08:06.276571