ADB_PG_SQL ノードでは、日付関数は指定された文字列の柔軟な処理を可能にします。 このトピックでは、ADB_PG_SQL ノードでサポートされている日付関数の構文、パラメーターの説明、および例を概説し、開発における文字列関数の使用に関するガイダンスを提供します。
AnalyticDB for PostgreSQL でサポートされている文字列関数は次のとおりです。
関数 | 機能 |
パラメーターを減算して、日数だけでなく、年と月で「記号的な」結果を生成します。 | |
指定された日付と現在の日付の差を計算します。 | |
文の実行中に変化する現在の日付と時刻を提供します。 | |
現在の日付を返します。 | |
現在の時刻を提供します。 | |
現在のトランザクションの開始時の現在の日付と時刻を返します。 | |
指定されたサブフィールドを抽出します (extract と同等)。 | |
指定された精度に切り捨てます。 | |
指定された精度に切り捨てます。 | |
指定されたサブフィールドを抽出します。 | |
指定されたサブフィールドを抽出します。 | |
有限の日付 ( +/- 無限大ではない) をテストします。 | |
有限のタイムスタンプ ( +/- 無限大ではない) をテストします。 | |
有限の間隔をテストします。 | |
間隔を調整して、30 日の期間を月として表します。 | |
間隔を調整して、24 時間の期間を日として表します。 | |
追加の符号調整を使用して、justify_days および justify_hours を使用して間隔を調整します。 | |
現在の時刻を提供します。 | |
現在のトランザクションの開始時の現在の日付と時刻を返します。 | |
年、月、日のフィールドから日付を作成します。 | |
年、月、週、日、時、分、秒のフィールドから間隔を作成します。 | |
時、分、秒のフィールドから時刻を作成します。 | |
年、月、日、時、分、秒のフィールドからタイムスタンプを作成します。 | |
デフォルトで現在のタイムゾーンを使用して、年、月、日、時、分、秒のフィールドからタイムゾーン付きのタイムスタンプを作成します。 | |
現在のトランザクションの開始時の現在の日付と時刻を返します。 | |
現在の文の開始時の現在の日付と時刻を提供します。 | |
clock_timestamp と同様に、現在の日付と時刻をテキスト文字列として返します。 | |
現在のトランザクションの開始時の現在の日付と時刻を提供します。 |
age
コマンド構文
age(timestamp, timestamp)
コマンドの説明:日数だけでなく、パラメーターを減算することにより、年と月で「記号的な」結果を生成します。
パラメーターの説明:
timestamp:必須。 計算対象の日付。
timestamp:必須。 比較対象の日付。
戻り値の説明:日付から指定されたパラメーターを減算した後の、年と月での「記号的な」結果を返します。
例:
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、date、time、または interval 型を指定できます。
戻り値の説明:timestamp から文字列 text で指定された部分を返します。
例:
SELECT date_part('century', TIMESTAMP '2023-01-01 12:41:13.662522'); -- 21 を返します
date_trunc
コマンド構文
date_trunc(text, timestamp)
コマンドの説明:指定された精度に切り捨てます。
パラメーターの説明:
string:必須。 切り捨てる部分を文字列で表します。
戻り値の説明:指定された時刻を指定された部分に切り捨てて返します。
例:
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)
コマンドの説明:interval 型の値に対して、指定された精度に切り捨てます。
パラメーターの説明:
string:必須。 切り捨てる部分を文字列で表します。
戻り値の説明:指定された interval 値を指定された部分に切り捨てて返します。
例:
SELECT date_trunc('hour', INTERVAL '1 days 20:10:10'); -- 1 day 20:00:00 を返します
extract
コマンド構文
extract(field from timestamp)
コマンドの説明:指定されたサブフィールドを抽出します。
パラメーターの説明:
field:必須。 抽出する部分を文字列で表します。
timestamp:必須。 タイムスタンプ。
戻り値の説明:指定された timestamp または interval 値を指定された部分に切り捨てて返します。
<
例:
SELECT extract(CENTURY FROM TIMESTAMP '2023-01-01 12:41:13.662522'); -- 21 を返します
extract
コマンド構文
extract(field from interval)
コマンドの説明:指定されたサブフィールドを抽出します。
パラメーターの説明:
field:必須。 抽出する部分を文字列で表します。
timestamp:必須。 interval 値。
戻り値の説明:指定された timestamp または interval 値を指定された部分に切り捨てて返します。
例:
SELECT extract(DAY FROM INTERVAL '2 days 10 minutes'); -- 2 を返します
isfinite
コマンド構文
isfinite(date)
コマンドの説明:有限の日付 ( +/- 無限大ではない) をテストします。
パラメーターの説明:
string:必須。 桁数を計算する必要がある文字列。
戻り値の説明:指定された文字列の桁数を表す整数を返します。
例:
SELECT isfinite(DATE '2023-01-01'); -- t を返します
isfinite
コマンド構文
isfinite(timestamp)
コマンドの説明:有限のタイムスタンプ ( +/- 無限大ではない) をテストします。
パラメーターの説明:
timestamp:必須。 検出対象の timestamp 値。
戻り値の説明:指定された date、timestamp、または interval 値が有限かどうかを示すブール値を返します。
例:
SELECT isfinite(TIMESTAMP '2023-01-01 12:41:13.662522'); -- t を返します
isfinite
コマンド構文
isfinite(interval)
コマンドの説明:有限の間隔値 ( +/- 無限大ではない) をテストします。
パラメーターの説明:
interval:必須。 検出対象の interval 値。
戻り値の説明:指定された date、timestamp、または interval 値が有限かどうかを示すブール値を返します。
例:
isfinite(INTERVAL '2 days 10 minutes'); -- t を返します
justify_days
コマンド構文
justify_days(interval)
コマンドの説明:間隔を調整して、30 日の期間を月として表します。
パラメーターの説明:
interval:必須。 変換対象の interval 値。
戻り値の説明:指定された文字列の桁数を表す整数を返します。
例:
SELECT justify_days(INTERVAL '20 days'); -- 20 days を返します
justify_hours
コマンド構文
justify_hours(interval)
コマンドの説明:間隔を調整して、24 時間の期間を日として表します。
パラメーターの説明:
interval:必須。 変換対象の interval 値。
戻り値の説明:24 時間未満の間隔は変更せずに、間隔内で 24 時間を超える時間を日数に変換します。
例:
SELECT justify_hours(INTERVAL '20 hours'); -- 20:00:00 を返します
justify_interval
コマンド構文
justify_interval
コマンドの説明:符号調整を含め、justify_days および justify_hours を使用して間隔を調整します。
パラメーターの説明:
string:必須。 変換対象の interval 値。
戻り値の説明:時間間隔の表現を変換し、該当する場合は時間を日数に、日数を月数に調整します。
例:
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
コマンドの説明:年、月、週、日、時、分、秒のフィールドから間隔を作成します。
戻り値の説明:指定されたフィールドから作成された 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:必須。 時の整数値。
minute:必須。 分の整数値。
second:必須。 秒の浮動小数点数。
戻り値の説明:指定された時、分、秒のフィールドから作成された時刻値を返します。
例:
SELECT make_time(20, 55, 25.517606); -- 20:55:25.517606 を返します
make_timestamp
コマンド構文
make_timestamp(year, month, day, hour, minute, second)
コマンドの説明:年、月、日、時、分、秒のフィールドからタイムスタンプを作成します。
パラメーターの説明:
パラメーターの説明:
year:必須。 年を整数値で指定します。
month:必須。 月の整数値。
day:必須。 日の整数値。
hour:必須。 時の整数値。
minute:必須。 分の整数値。
戻り値の説明:この関数は、指定された年、月、日、時、分、秒からタイムスタンプを生成します。 負の年は紀元前の日付を示します。
例:
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:必須。 月の整数値。
day:必須。 日の整数値。
hour:必須。 時の整数値。
minute:必須。 分の整数値。
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 3 16:08:09.228504 2023 CST を返します
transaction_timestamp
コマンド構文
transaction_timestamp()
コマンドの説明:関数が属するトランザクションの開始時の現在の日付と時刻を取得します。
戻り値の説明:タイムゾーン情報を含む日付と時刻を返します。 これは、関数が属するトランザクションの開始時のシステムの⽇付と時刻に対応します。
例:
SELECT transaction_timestamp(); -- 2023-01-03 16:08:06.276571 を返します