日期函数

您可以在ADB_PG_SQL任务中使用日期函数对指定字符串进行灵活处理。本文为您提供ADB_PG_SQL任务支持的数学函数的命令格式、参数说明及示例,指导您使用字符串函数完成开发。

AnalyticDB for PostgreSQL支持的字符串函数如下。

函数

功能

age

减去参数,产生一个使用年和月的“符号”结果,而不仅仅是天。

age

从当前日期中减去相应日期。

clock_timestamp

当前日期和时间(语句执行期间的更改)。

current_date

当前日期。

current_time

当前时间。

current_timestamp

当前日期和时间(当前交易的开始)。

date_part

获取子字段(相当于extract)。

date_trunc

截断到指定的精度。

date_trunc

截断到指定的精度。

extract

获取子字段。

extract

获取子字段。

isfinite

测试有限日期 (not +/-infinity)。

isfinite

测试有限时间戳 (not +/-infinity)。

isfinite

有限区间测试。

justify_days

调整间隔,使 30 天的时间段表示为月。

justify_hours

调整间隔,使 24 小时时间段以天数表示。

justify_interval

使用 justify_days 和 justify_hours 调整间隔,并进行额外的符号调整。

localtime

当前时间。

localtimestamp

当前日期和时间(当前事务的开始)。

make_date

从年月日字段创建日期。

make_interval

从年、月、周、日、小时、分钟和秒字段创建间隔。

make_time

从小时、分钟和秒字段创建时间。

make_timestamp

从年、月、日、小时、分钟和秒字段创建时间戳。

make_timestamptz

从年、月、日、小时、分钟和秒字段创建带时区的时间戳。如果未指定时区,则使用当前时区。

now

当前日期和时间(当前交易的开始)。

statement_timestamp

当前日期和时间(当前语句的开始)。

timeofday

当前日期和时间(类似于 clock_timestamp,但作为文本字符串)。

transaction_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