すべてのプロダクト
Search
ドキュメントセンター

Time Series Database:TSQL 関数

最終更新日:Mar 28, 2026

TSQL では、集計関数、数学関数、三角関数、文字列関数、タイムスタンプ関数、およびデータ型変換関数をサポートしています。

集計関数

関数サポートされるデータ型戻り値の型説明
avg(expression)SMALLINT、INTEGER、BIGINT、FLOAT、DOUBLE入力と同一式の値の平均
count(*)該当なしBIGINT行の合計数
count(expression)すべてのデータ型BIGINTNULL でない値の個数
count(distinct expression)すべてのデータ型該当なし一意の NULL でない値の個数
max(expression)SMALLINT、INTEGER、BIGINT、FLOAT、DOUBLE、VARCHAR入力と同一最大値
min(expression)SMALLINT、INTEGER、BIGINT、FLOAT、DOUBLE、VARCHAR入力と同一最小値
ts_last(expression, timestamp)expression:DOUBLE、VARCHAR、BOOLEAN;timestamp:TIMESTAMPexpression の型と同一最新のタイムスタンプにおける値
ts_first(expression, timestamp)expression:DOUBLE、VARCHAR、BOOLEAN;timestamp:TIMESTAMPexpression の型と同一最も早いタイムスタンプにおける値

時系列集計関数

ts_first および ts_last は、時系列データ向けに設計されています。一方、min および max はグループ内の最小または最大値を返しますが、これらの関数は特定の時点(結果セット内の最も早いタイムスタンプ:ts_first、または最も遅いタイムスタンプ:ts_last)に関連付けられた値を返します。最小値または最大値ではなく、最初または最後に記録された測定値を取得する場合に使用します。

数学関数

ほとんどの数学関数は、INTEGER、BIGINT、FLOAT、DOUBLE、SMALLINT を入力として受け付けます。三角関数 で、サポートされる三角関数の完全な一覧をご確認ください。

関数戻り値の型説明
ABS(x)入力と同一x の絶対値
CBRT(x)FLOAT8x の立方根
CEIL(x)入力と同一x 以上で最小の整数
CEILING(x)入力と同一CEIL(x)
DEGREES(x)FLOAT8x をラジアンから度に変換
E()FLOAT8オイラー数:2.718281828459045
EXP(x)FLOAT8e の x 乗
FLOOR(x)入力と同一x 以下で最大の整数
LOG(x)FLOAT8x の自然対数(底 e)
LOG(x, y)FLOAT8底 x における y の対数
LOG10(x)FLOAT8x の常用対数(底 10)
LSHIFT(x, y)入力と同一x を y ビット左シフト
MOD(x, y)FLOAT8x を y で割った余り
NEGATIVE(x)入力と同一x の符号反転
PIFLOAT8円周率 π
POW(x, y)FLOAT8x の y 乗
RADIANS(x)FLOAT8x を度からラジアンに変換
RANDFLOAT8[0, 1) の範囲の乱数
ROUND(x)入力と同一x を最も近い整数に四捨五入
RSHIFT(x, y)入力と同一x を y ビット右シフト
SIGN(x)INTx の符号:-1、0、または 1
SQRT(x)入力と同一x の平方根
TRUNC(x, y)DOUBLEx を小数点以下 y 桁で切り捨て(デフォルト:0)

以下の例では、math_func_demo テーブルを使用します:

SELECT * FROM math_func_demo;

+---------------+-----------------------+
|    integer    |         float         |
+---------------+-----------------------+
| 2010          | 17.4                  |
| -2002         | -1.2                  |
| 2001          | 1.2                   |
| 6005          | 1.2                   |
+---------------+-----------------------+

ABS(x) — 整数列の絶対値:

SELECT ABS(`integer`) AS abs_value FROM math_func_demo;

+------------+
| abs_value  |
+------------+
| 2010       |
| 2002       |
| 2001       |
| 6005       |
+------------+
4 行が選択されました(0.357 秒)

CEIL(x) — 各浮動小数点数を最も近い整数に切り上げ:

SELECT CEIL(`float`) AS ceil_value FROM math_func_demo;

+------------+
| ceil_value |
+------------+
| 18.0       |
| -1.0       |
| 2.0        |
| 2.0        |
+------------+
4 行が選択されました(0.647 秒)

FLOOR(x) — 各浮動小数点数を最も近い整数に切り下げ:

SELECT FLOOR(`float`) AS floor_value FROM math_func_demo;

+-------------+
| floor_value |
+-------------+
| 17.0        |
| -2.0        |
| 1.0         |
| 1.0         |
+-------------+
4 行が選択されました(0.11 秒)

ROUND(x) — 最も近い整数に丸め;ROUND(x, y) — 小数点以下 y 桁に丸め:

SELECT ROUND(`float`) AS rounded FROM math_func_demo;

+---------+
| rounded |
+---------+
| 3.0     |
| -1.0    |
| 1.0     |
| 1.0     |
+---------+
4 行が選択されました(0.061 秒)

SELECT ROUND(`float`, 4) AS rounded_4dp FROM math_func_demo;

+-------------+
| rounded_4dp |
+-------------+
| 3.1416      |
| -1.2        |
| 1.2         |
| 1.2         |
+-------------+
4 行が選択されました(0.059 秒)

LOG(x, y)LOG10(x)LOG(x) — 指定した底の対数、常用対数、自然対数:

SELECT LOG(2, 64) AS log2_64 FROM (VALUES(1));

+---------+
| log2_64 |
+---------+
| 6.0     |
+---------+
1 行が選択されました(0.069 秒)

SELECT LOG10(100) AS log10_100 FROM (VALUES(1));

+-----------+
| log10_100 |
+-----------+
| 2.0       |
+-----------+
1 行が選択されました(0.203 秒)

SELECT LOG(7.5) AS ln_7_5 FROM (VALUES(1));

+---------------------+
| ln_7_5              |
+---------------------+
| 2.0149030205422647  |
+---------------------+
1 行が選択されました(0.139 秒)

三角関数

すべての三角関数は、INTEGER、BIGINT、FLOAT、DOUBLE、SMALLINT を入力として受け付け、FLOAT8 を返します。

関数説明
SIN(x)x の正弦
COS(x)x の余弦
TAN(x)x の正接
ASIN(x)x の逆正弦
ACOS(x)x の逆余弦
ATAN(x)x の逆正接
SINH(x)x の双曲正弦
COSH(x)x の双曲余弦
TANH(x)x の双曲正接

45 度をラジアンに変換し、その後その正弦および正接を計算します:

SELECT RADIANS(45) AS radians_45 FROM (VALUES(1));

+--------------------+
| radians_45         |
+--------------------+
| 0.7853981633974483 |
+--------------------+
1 行が選択されました(0.045 秒)

SELECT SIN(0.7853981633974483) AS sin_45 FROM (VALUES(1));

+--------------------+
| sin_45             |
+--------------------+
| 0.7071067811865475 |
+--------------------+
1 行が選択されました(0.059 秒)

SELECT TAN(0.7853981633974483) AS tan_45 FROM (VALUES(1));

+--------------------+
| tan_45             |
+--------------------+
| 0.9999999999999999 |
+--------------------+

文字列関数

関数構文戻り値の型説明
CONCATCONCAT(string [, string [, ...]])VARCHAR文字列を連結
INITCAPINITCAP(string)VARCHAR各単語の先頭文字を大文字にし、残りを小文字にする
LENGTHLENGTH(string [, encoding])INTEGER文字数
LOWERLOWER(string)VARCHAR小文字に変換
LPADLPAD(string, length [, fill])VARCHAR指定された長さまで左側を埋める。結果が長さを超える場合は切り捨て
LTRIMLTRIM(string1, string2)VARCHARstring2 に含まれる文字を string1 の左端から削除
REGEXP_REPLACEREGEXP_REPLACE(source, pattern, replacement)VARCHARJava 正規表現パターンに一致するすべての箇所を置き換え
RPADRPAD(string, length [, fill])VARCHAR指定された長さまで右側を埋める。結果が長さを超える場合は切り捨て
RTRIMRTRIM(string1, string2)VARCHARstring2 に含まれる文字を string1 の右端から削除
STRPOSSTRPOS(string, substring)INTEGER文字列中の部分文字列の位置
SUBSTRSUBSTR(string, x [, y])VARCHARインデックス x から始まる部分文字列。オプションでインデックス y で終了
TRIMTRIM([leading | trailing | both] [string1] FROM string2)VARCHAR左端、右端、または両端から文字を削除
UPPERUPPER(string)VARCHAR大文字に変換

CONCAT — 複数の文字列を連結:

SELECT CONCAT('Drill', ' ', 1.0, ' ', 'release') AS result FROM (VALUES(1));

+----------------+
| result         |
+----------------+
| Drill 1.0 release |
+----------------+
1 行が選択されました(0.134 秒)

INITCAP — 各単語の先頭文字を大文字にする:

SELECT INITCAP('china beijing') AS result FROM (VALUES(1));

+--------------+
| result       |
+--------------+
| China Beijing |
+--------------+
1 行が選択されました(0.106 秒)

LENGTH — 文字列の文字数をカウント:

SELECT LENGTH('Hangzhou') AS char_count FROM (VALUES(1));

+------------+
| char_count |
+------------+
| 8          |
+------------+
1 行が選択されました(0.127 秒)

LOWER — 小文字に変換:

SELECT LOWER('China Beijing') AS result FROM (VALUES(1));

+---------------+
| result        |
+---------------+
| china beijing |
+---------------+
1 行が選択されました(0.103 秒)

LPAD'hi' を長さ 5 に左詰めし、埋め込みテキストとして 'xy' を使用します:

SELECT LPAD('hi', 5, 'xy') AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| xyxhi  |
+--------+
1 行が選択されました(0.132 秒)

LTRIM — 先頭の文字を削除:

SELECT LTRIM('zzzytest', 'xyz') AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| test   |
+--------+
1 行が選択されました(0.131 秒)

REGEXP_REPLACE — Java 正規表現パターンに一致する箇所を置き換え。最初の例では、各 'a''b' に置き換えます。2 番目の例では、パターン 'a.' を使用して、'a' の後に任意の文字が続く箇所をマッチさせます:

SELECT REGEXP_REPLACE('abc, acd, ade, aef', 'a', 'b') AS result FROM (VALUES(1));

+---------------------+
| result              |
+---------------------+
| bbc, bcd, bde, bef  |
+---------------------+
1 行が選択されました(0.105 秒)

SELECT REGEXP_REPLACE('abc, acd, ade, aef', 'a.', 'b') AS result FROM (VALUES(1));

+-----------------+
| result          |
+-----------------+
| bc, bd, be, bf  |
+-----------------+
1 行が選択されました(0.113 秒)

RPAD — 埋め込みテキスト 'hi' を長さ 5 まで右側に埋め、埋め込みテキストとして 'xy' を使用:

SELECT RPAD('hi', 5, 'xy') AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| hixyx  |
+--------+
1 行が選択されました(0.107 秒)

RTRIM — 末尾の文字を削除:

SELECT RTRIM('testxxzx', 'xyz') AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| tes    |
+--------+
1 行が選択されました(0.102 秒)

STRPOS — 部分文字列の位置を検索:

SELECT STRPOS('high', 'ig') AS position FROM (VALUES(1));

+----------+
| position |
+----------+
| 2        |
+----------+
1 行が選択されました(0.22 秒)

SUBSTR — インデックス 7 から始まる部分文字列、またはインデックス 3 から 4 までの部分文字列を抽出:

SELECT SUBSTR('China Beijing', 7) AS result FROM (VALUES(1));

+---------+
| result  |
+---------+
| Beijing |
+---------+
1 行が選択されました(0.134 秒)

SELECT SUBSTR('China Beijing', 3, 2) AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| in     |
+--------+
1 行が選択されました(0.129 秒)

TRIM — 末尾、両端、または先頭から文字を削除:

SELECT TRIM(trailing 'A' FROM 'AABBAA') AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| AABB   |
+--------+
1 行が選択されました(0.172 秒)

SELECT TRIM(both 'A' FROM 'AABBAA') AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| BB     |
+--------+
1 行が選択されました(0.104 秒)

SELECT TRIM(leading 'A' FROM 'AABBAA') AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| BBAA   |
+--------+
1 行が選択されました(0.101 秒)

UPPER — 大文字に変換:

SELECT UPPER('china beijing') AS result FROM (VALUES(1));

+---------------+
| result        |
+---------------+
| CHINA BEIJING |
+---------------+
1 行が選択されました(0.081 秒)

タイムスタンプ関数

関数戻り値の型説明
now()TIMESTAMP現在のタイムスタンプnow()
CURRENT_TIMESTAMPTIMESTAMP現在のタイムスタンプCURRENT_TIMESTAMP
CURRENT_DATEDATE現在の日付CURRENT_DATE
CURRENT_TIMETIME日付を含まない現在の時刻
EXTRACT(component FROM timestamp|date|time)INTEGER年、月、日、時、分、秒を抽出EXTRACT(day FROM 'timestamp')
tumble(timestamp, interval)TIMESTAMP指定されたタイムスタンプを含むタンブリング ウィンドウの下限境界tumble('timestamp', interval '5' minute)
date_diff(timestamp, interval)TIMESTAMPタイムスタンプから間隔を減算date_diff(timestamp, interval '5' minute)
date_add(timestamp, interval)TIMESTAMPタイムスタンプに間隔を加算date_add(timestamp, interval '5' minute)

SELECT CURRENT_DATE FROM (VALUES(1));

+---------------+
| CURRENT_DATE  |
+---------------+
| 2019-11-27    |
+---------------+

時刻値から時を抽出:

SELECT EXTRACT(hour FROM TIME '17:12:28.5') AS hour FROM (VALUES(1));

+------+
| hour |
+------+
| 17   |
+------+

タイムスタンプから秒を抽出:

SELECT EXTRACT(SECOND FROM TIMESTAMP '2001-02-16 20:38:40') AS second FROM (VALUES(1));

+--------+
| second |
+--------+
| 40.0   |
+--------+

タイムスタンプから 5 分を減算:

SELECT DATE_DIFF(TIMESTAMP '2001-02-16 20:38:40', interval '5' minute) AS result FROM (VALUES(1));

+------------------------+
| result                 |
+------------------------+
| 2001-02-16 20:33:40.0  |
+------------------------+

タイムスタンプに 5 分を加算:

SELECT DATE_ADD(TIMESTAMP '2001-02-16 20:38:40', interval '5' minute) AS result FROM (VALUES(1));

+------------------------+
| result                 |
+------------------------+
| 2001-02-16 20:43:40.0  |
+------------------------+

タイムスタンプを含む 5 分間のタンブリング ウィンドウの下限境界を取得:

SELECT tumble(TIMESTAMP '2001-02-16 20:38:40', interval '5' minute) AS window_start FROM (VALUES(1));

+------------------------+
| window_start           |
+------------------------+
| 2001-02-16 20:35:00.0  |
+------------------------+

データ型変換関数

CAST

CAST は、式をあるデータ型から別のデータ型に変換します。

構文:

CAST (<expression> AS <data type>)
パラメーター説明
expression評価する値、または演算子と SQL 関数の組み合わせ
data typeINTEGER や DATE などのターゲットとなるデータ型

— 数値を VARCHAR および CHAR に変換:

SELECT CAST(456 AS VARCHAR(3)) AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| 456    |
+--------+
1 行が選択されました(0.08 秒)

SELECT CAST(456 AS CHAR(3)) AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| 456    |
+--------+
1 行が選択されました(0.093 秒)

日付および時刻の変換関数

TSQL は、以下の日付および時刻の形式をネイティブで解析します:

  • 2008-12-15

  • 22:55:55.123…

その他の形式については、以下の変換関数を使用して、TIMESTAMP、DATE、TIME、INTEGER、FLOAT、DOUBLE、VARCHAR 間で変換を行います。

関数戻り値の型
TO_CHAR(expression, format)VARCHAR
TO_DATE(expression, format)DATE
TO_TIMESTAMP(VARCHAR, format)TIMESTAMP
TO_TIMESTAMP(DOUBLE)TIMESTAMP

書式指定子

これらの関数では、Joda-Time の書式指定子を使用します。

記号意味プレゼンテーション
G時代テキストAD
C世紀(>=0)番号20
Y時代区分における年(>=0)1996
x週年(Week year)1996
w週年における週番号27
e曜日番号2
E曜日テキスト火曜日; 火
y1996
D年の日付番号189
MJuly;Jul;07
d月の日付番号10
a午前/午後テキストPM
K午前/午後の時(0–11)番号0
h半日の時刻(1~12)数値12
H1 日の時(0–23)数値0
k1 日の時(1–24)数値24
m時の分数値30
s分の秒数値55
S秒の小数部番号978
zタイムゾーンテキストPacific Standard Time;PST
Zタイムゾーンオフセット/IDゾーン-0800;-08:00;America/Los_Angeles
'テキスト区切り文字のエスケープリテラル

TO_CHAR の例

数値を書式付き文字列に変換:

SELECT TO_CHAR(1256.789383, '#,###.###') AS result FROM (VALUES(1));

+-----------+
| result    |
+-----------+
| 1,256.789 |
+-----------+
1 行が選択されました(1.767 秒)

SELECT TO_CHAR(125677.4567, '#,###.###') AS result FROM (VALUES(1));

+-------------+
| result      |
+-------------+
| 125,677.457 |
+-------------+
1 行が選択されました(0.083 秒)

DATE を書式付き文字列に変換:

SELECT TO_CHAR((CAST('2008-2-23' AS DATE)), 'yyyy-MMM-dd') AS result FROM (VALUES(1));

+-------------+
| result      |
+-------------+
| 2008-Feb-23 |
+-------------+
1 行が選択されました(0.166 秒)

TIME を書式付き文字列に変換:

SELECT TO_CHAR(CAST('12:20:30' AS TIME), 'HH mm ss') AS result FROM (VALUES(1));

+--------+
| result |
+--------+
| 12 20 30 |
+--------+
1 行が選択されました(0.07 秒)

TIMESTAMP を書式付き文字列に変換:

SELECT TO_CHAR(CAST('2015-2-23 12:00:00' AS TIMESTAMP), 'yyyy MMM dd HH:mm:ss') AS result FROM (VALUES(1));

+---------------------+
| result              |
+---------------------+
| 2015 Feb 23 12:00:00 |
+---------------------+
1 行が選択されました(0.142 秒)

TO_DATE の例

文字列を日付に変換:

SELECT TO_DATE('2015-FEB-23', 'yyyy-MMM-dd') AS result FROM (VALUES(1));

+------------+
| result     |
+------------+
| 2015-02-23 |
+------------+
1 行が選択されました(0.077 秒)

変換された日付から年を抽出:

SELECT EXTRACT(year FROM mydate) AS extracted_year
FROM (SELECT TO_DATE('2015-FEB-23', 'yyyy-MMM-dd') AS mydate FROM (VALUES(1)));

+----------------+
| extracted_year |
+----------------+
| 2015           |
+----------------+
1 行が選択されました(0.128 秒)

UNIX タイムスタンプ(ミリ秒)を日付に変換:

SELECT TO_DATE(1427849046000) AS result FROM (VALUES(1));

+------------+
| result     |
+------------+
| 2015-04-01 |
+------------+
1 行が選択されました(0.082 秒)

TO_TIME の例

ミリ秒を時刻値に変換:

SELECT to_time(82855000) AS result FROM (VALUES(1));

+----------+
| result   |
+----------+
| 23:00:55 |
+----------+
1 行が選択されました(0.086 秒)

TO_TIMESTAMP の例

書式付き文字列をタイムスタンプに変換:

SELECT TO_TIMESTAMP('2008-2-23 12:00:00', 'yyyy-MM-dd HH:mm:ss') AS result FROM (VALUES(1));

+------------------------+
| result                 |
+------------------------+
| 2008-02-23 12:00:00.0  |
+------------------------+
1 行が選択されました(0.126 秒)

UNIX 時間値をタイムスタンプに変換:

SELECT TO_TIMESTAMP(1427936330) AS result FROM (VALUES(1));

+------------------------+
| result                 |
+------------------------+
| 2015-04-01 17:58:50.0  |
+------------------------+
1 行が選択されました(0.114 秒)

UTC 日付文字列をタイムゾーンオフセット付きのタイムスタンプに変換:

SELECT
  TO_TIMESTAMP('2015-03-30 20:49:59.0 UTC', 'YYYY-MM-dd HH:mm:ss.s z') AS Original,
  TO_CHAR(TO_TIMESTAMP('2015-03-30 20:49:59.0 UTC', 'YYYY-MM-dd HH:mm:ss.s z'), 'z') AS New_TZ
FROM (VALUES(1));

+------------------------+---------+
| Original               | New_TZ  |
+------------------------+---------+
| 2015-03-30 20:49:00.0  | UTC     |
+------------------------+---------+
1 行が選択されました(0.148 秒)