全部產品
Search
文件中心

Dataphin:日期函數

更新時間:Jan 25, 2025

您可以在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