データ変換に関する一般的な問題
ClickHouse は通常、C++ プログラムと同じ動作をします。
to<type> 関数と cast は、場合によっては異なる動作をします。たとえば LowCardinality の場合、cast は LowCardinality 特性を取り除きますが、to<type> 関数は取り除きません。Nullable についても同様です。この動作は SQL 標準とは互換性がなく、cast_keep_nullable 設定で変更できます。
例:
SELECT
toTypeName(toLowCardinality('') AS val) AS source_type,
toTypeName(toString(val)) AS to_type_result_type,
toTypeName(CAST(val, 'String')) AS cast_result_type
┌toString 関数に関する注意事項
toString 関数ファミリーでは、数値、文字列 (固定長文字列を除く) 、日付、日時の間で変換できます。
これらの関数はすべて 1 つの引数を受け取ります。
- 文字列との相互変換では、値のフォーマットや解析に TabSeparated フォーマット (および、ほぼすべての他のテキストフォーマット) と同じ規則が使われます。文字列を解析できない場合は例外が発生し、リクエストはキャンセルされます。
- 日付を数値に変換する場合、およびその逆の場合、日付は Unix epoch の開始からの日数に対応します。
- 日時を数値に変換する場合、およびその逆の場合、日時は Unix epoch の開始からの秒数に対応します。
DateTime型の引数に対するtoString関数では、タイムゾーン名 (たとえばEurope/Amsterdam) を含む 2 番目の String 型引数を指定できます。この場合、時刻は指定したタイムゾーンに従ってフォーマットされます。
toDate/toDateTime 関数に関する注意
toDate/toDateTime 関数の日付および日時のフォーマットは、次のように定義されています。
YYYY-MM-DD
YYYY-MM-DD hh:mm:ss例外として、UInt32、Int32、UInt64、または Int64 の数値型から Date に変換する際、値が 65536 以上であれば、その値は経過日数ではなく Unixタイムスタンプ として解釈され、日付に丸められます。
これにより、よくある toDate(unix_timestamp) という書き方をサポートできます。これがなければエラーとなり、より煩雑な toDate(toDateTime(unix_timestamp)) と書く必要があります。
日付と日時の間の変換は、時刻が null の値を追加するか時刻を切り捨てるという自然な方法で行われます。
数値型同士の変換には、C++ における異なる数値型間の代入と同じ規則が適用されます。
例
SELECT
now() AS ts,
time_zone,
toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast │ 2023-09-08 20:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belgrade │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Berlin │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bratislava │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Brussels │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bucharest │ 2023-09-08 22:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘toUnixTimestamp 関数もあわせて参照してください。
CAST
導入バージョン: v1.1.0
値を指定したデータ型に変換します。
reinterpret 関数とは異なり、CAST は変換先の型でも同じ値になるように変換を試みます。
それが不可能な場合は、例外が送出されます。
構文
CAST(x, T)
or CAST(x AS T)
or x::T引数
戻り値
変換先のデータ型に変換された値を返します。Any
例
基本的な使い方
SELECT CAST(42, 'String')┌─CAST(42, 'String')─┐
│ 42 │
└────────────────────┘AS構文を使う
SELECT CAST('2025-01-01' AS Date)┌─CAST('2025-01-01', 'Date')─┐
│ 2025-01-01 │
└────────────────────────────┘「::」構文の使用
SELECT '123'::UInt32┌─CAST('123', 'UInt32')─┐
│ 123 │
└───────────────────────┘DATE
導入バージョン: v21.2.0
引数を Date データ型に変換します。これは toDate の MySQL 互換エイリアスです。動作は toDate と同じです。
構文
DATE(expr)引数
戻り値
Date 型の値を返します。
例
基本的な使い方
SELECT DATE('2023-01-01')2023-01-01accurateCast
導入バージョン: v1.1.0
値を指定したデータ型に変換します。CAST とは異なり、accurateCast はより厳密な型チェックを行い、変換によってデータの精度が失われる場合や、変換できない場合には例外をスローします。
この関数は、精度の損失や無効な変換を防ぐため、通常の CAST よりも安全です。
構文
accurateCast(x, T)引数
戻り値
変換先のデータ型に変換された値を返します。Any
例
変換に成功した場合
SELECT accurateCast(42, 'UInt16')┌─accurateCast(42, 'UInt16')─┐
│ 42 │
└────────────────────────────┘文字列から数値
SELECT accurateCast('123.45', 'Float64')┌─accurateCast('123.45', 'Float64')─┐
│ 123.45 │
└───────────────────────────────────┘accurateCastOrDefault
導入バージョン: v21.1.0
値を指定したデータ型に変換します。
accurateCast と似ていますが、正確に変換できない場合は、例外をスローする代わりにデフォルト値を返します。
デフォルト値を第2引数として指定する場合、その値は変換先の型でなければなりません。 デフォルト値が指定されていない場合は、変換先の型のデフォルト値が使用されます。
構文
accurateCastOrDefault(x, T[, default_value])引数
x— 変換する値。AnyT— 変換先の型名。const Stringdefault_value— 省略可。変換に失敗した場合に返されるデフォルト値。Any
戻り値
変換後の値を返します。変換できない場合はデフォルト値を返します。Any
例
変換に成功した場合
SELECT accurateCastOrDefault(42, 'String')┌─accurateCastOrDefault(42, 'String')─┐
│ 42 │
└─────────────────────────────────────┘明示的なデフォルト値を使った変換の失敗
SELECT accurateCastOrDefault('abc', 'UInt32', 999::UInt32)┌─accurateCastOrDefault('abc', 'UInt32', CAST('999', 'UInt32'))─┐
│ 999 │
└───────────────────────────────────────────────────────────────┘暗黙的なデフォルト値による変換の失敗
SELECT accurateCastOrDefault('abc', 'UInt32')┌─accurateCastOrDefault('abc', 'UInt32')─┐
│ 0 │
└────────────────────────────────────────┘accurateCastOrNull
導入バージョン: v1.1.0
値を指定したデータ型に変換します。
accurateCast と同様ですが、正確に変換できない場合は、例外をスローする代わりに NULL を返します。
この関数は、accurateCast の安全性と、適切なエラーハンドリングを兼ね備えています。
構文
accurateCastOrNull(x, T)引数
戻り値
変換先のデータ型に変換された値を返します。変換できない場合は NULL を返します。Any
例
変換が成功する場合
SELECT accurateCastOrNull(42, 'String')┌─accurateCastOrNull(42, 'String')─┐
│ 42 │
└──────────────────────────────────┘変換に失敗すると NULL を返します
SELECT accurateCastOrNull('abc', 'UInt32')┌─accurateCastOrNull('abc', 'UInt32')─┐
│ ᴺᵁᴸᴸ │
└─────────────────────────────────────┘formatRow
導入バージョン: v20.7.0
任意の式を、指定されたフォーマットで文字列に変換します。
構文
formatRow(format, x, y, ...)引数
戻り値
書式化された文字列。 (テキストフォーマットでは通常、末尾に改行文字が付きます) 。String
例
基本的な使い方
SELECT formatRow('CSV', number, 'good')
FROM numbers(3)┌─formatRow('CSV', number, 'good')─┐
│ 0,"good" ↴│
│ 1,"good" ↴│
│ 2,"good" ↴│
└──────────────────────────────────┘カスタムフォーマットを使用する場合
SELECT formatRow('CustomSeparated', number, 'good')
FROM numbers(3)
SETTINGS format_custom_result_before_delimiter='<prefix>\n', format_custom_result_after_delimiter='<suffix>'┌─formatRow('CustomSeparated', number, 'good')─┐
│ <prefix> ↴│
│↳0 good ↴│
│↳<suffix> │
│ <prefix> ↴│
│↳1 good ↴│
│↳<suffix> │
│ <prefix> ↴│
│↳2 good ↴│
│↳<suffix> │
└──────────────────────────────────────────────┘formatRowNoNewline
導入バージョン: v20.7.0
formatRow と同じですが、各行の改行文字を取り除きます。
指定したフォーマットを使用して任意の式を文字列に変換しますが、結果の末尾にある改行文字はすべて削除されます。
構文
formatRowNoNewline(format, x, y, ...)引数
戻り値
改行が削除されたフォーマット済み文字列を返します。 String
例
基本的な使い方
SELECT formatRowNoNewline('CSV', number, 'good')
FROM numbers(3)┌─formatRowNoNewline('CSV', number, 'good')─┐
│ 0,"good" │
│ 1,"good" │
│ 2,"good" │
└───────────────────────────────────────────┘fromUnixTimestamp64Micro
導入バージョン: v20.5.0
マイクロ秒単位の Unixタイムスタンプを、マイクロ秒精度の DateTime64 値に変換します。
入力値は、マイクロ秒精度の Unixタイムスタンプ (1970-01-01 00:00:00 UTC からの経過マイクロ秒数) として扱われます。
構文
fromUnixTimestamp64Micro(value[, timezone])引数
戻り値
マイクロ秒精度の DateTime64 型の値を返します。DateTime64(6)
例
使用例
SELECT fromUnixTimestamp64Micro(1640995200123456)┌─fromUnixTimestamp64Micro(1640995200123456)─┐
│ 2022-01-01 00:00:00.123456 │
└────────────────────────────────────────────┘fromUnixTimestamp64Milli
導入バージョン: v20.5.0
ミリ秒単位の Unixタイムスタンプを、ミリ秒精度の DateTime64 値に変換します。
入力値は、ミリ秒精度の Unixタイムスタンプ (1970-01-01 00:00:00 UTC からの経過ミリ秒数) として扱われます。
構文
fromUnixTimestamp64Milli(value[, timezone])引数
戻り値
ミリ秒精度の DateTime64 値。DateTime64(3)
例
使用例
SELECT fromUnixTimestamp64Milli(1640995200123)┌─fromUnixTimestamp64Milli(1640995200123)─┐
│ 2022-01-01 00:00:00.123 │
└─────────────────────────────────────────┘fromUnixTimestamp64Nano
導入バージョン: v20.5.0
ナノ秒単位の Unixタイムスタンプ を、ナノ秒精度の DateTime64 値に変換します。
入力値は、ナノ秒精度の Unixタイムスタンプ (1970-01-01 00:00:00 UTC からのナノ秒数) として扱われます。
構文
fromUnixTimestamp64Nano(value[, timezone])引数
戻り値
ナノ秒精度の DateTime64 値を返します。DateTime64(9)
例
使用例
SELECT fromUnixTimestamp64Nano(1640995200123456789)┌─fromUnixTimestamp64Nano(1640995200123456789)─┐
│ 2022-01-01 00:00:00.123456789 │
└──────────────────────────────────────────────┘fromUnixTimestamp64Second
導入バージョン: v24.12.0
秒単位の Unixタイムスタンプ を、秒精度の DateTime64 値に変換します。
入力値は、秒精度の Unixタイムスタンプ (1970-01-01 00:00:00 UTC からの経過秒数) として扱われます。
構文
fromUnixTimestamp64Second(value[, timezone])引数
戻り値
秒精度の DateTime64 値を返します。 DateTime64(0)
例
使用例
SELECT fromUnixTimestamp64Second(1640995200)┌─fromUnixTimestamp64Second(1640995200)─┐
│ 2022-01-01 00:00:00 │
└───────────────────────────────────────┘parseDateTime
導入バージョン: v23.3.0
MySQL の日付フォーマット文字列に従って、日付と時刻の文字列を解析します。
この関数は formatDateTime の逆関数です。
フォーマット文字列を使用して String 型の引数を解析します。戻り値は DateTime 型です。
構文
parseDateTime(time_string, format[, timezone])別名: TO_UNIXTIME
引数
time_string— DateTime に解析する文字列。Stringformat—time_stringの解析方法を指定するフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
MySQL スタイルのフォーマット文字列に従って入力文字列を解析した DateTime を返します。DateTime
例
使用例
SELECT parseDateTime('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')┌─parseDateTime('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│ 2025-01-04 23:00:00 │
└───────────────────────────────────────────────────────────┘parseDateTime32BestEffort
導入バージョン: v20.9.0
日付と時刻の文字列表現を、DateTimeデータ型に変換します。
この関数は、ISO 8601、RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse独自の形式を含む、いくつかの日付と時刻のフォーマットを解析します。
構文
parseDateTime32BestEffort(time_string[, time_zone])引数
戻り値
time_string を DateTime として返します。DateTime
例
使用例
SELECT parseDateTime32BestEffort('23/10/2025 12:12:57')
AS parseDateTime32BestEffort┌─parseDateTime32BestEffort─┐
│ 2025-10-23 12:12:57 │
└───────────────────────────┘タイムゾーンあり
SELECT parseDateTime32BestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul')
AS parseDateTime32BestEffort┌─parseDateTime32BestEffort─┐
│ 2025-08-18 10:22:16 │
└───────────────────────────┘Unixタイムスタンプ
SELECT parseDateTime32BestEffort('1284101485')
AS parseDateTime32BestEffort┌─parseDateTime32BestEffort─┐
│ 2010-09-10 06:51:25 │
└───────────────────────────┘parseDateTime32BestEffortOrNull
導入バージョン: v20.9.0
parseDateTime32BestEffort と同様ですが、処理できない日付フォーマットが指定された場合は NULL を返します。
構文
parseDateTime32BestEffortOrNull(time_string[, time_zone])引数
戻り値
文字列からパースされた DateTime オブジェクトを返します。パースに失敗した場合は NULL を返します。DateTime
例
使用例
SELECT
parseDateTime32BestEffortOrNull('23/10/2025 12:12:57') AS valid,
parseDateTime32BestEffortOrNull('invalid date') AS invalid┌───────────────valid─┬─invalid─┐
│ 2025-10-23 12:12:57 │ ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘parseDateTime32BestEffortOrZero
導入バージョン: v20.9.0
parseDateTime32BestEffort と同様ですが、処理できない日付フォーマットに遭遇した場合は、ゼロ日付またはゼロ日時を返します。
構文
parseDateTime32BestEffortOrZero(time_string[, time_zone])引数
戻り値
文字列からパースされた DateTime オブジェクトを返します。パースに失敗した場合は、ゼロ日付 (1970-01-01 00:00:00) を返します。DateTime
例
使用例
SELECT
parseDateTime32BestEffortOrZero('23/10/2025 12:12:57') AS valid,
parseDateTime32BestEffortOrZero('invalid date') AS invalid┌───────────────valid─┬─────────────invalid─┐
│ 2025-10-23 12:12:57 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘parseDateTime64
導入バージョン: v24.11.0
MySQL の日付フォーマット文字列に従って、サブ秒精度の日付と時刻の文字列を解析します。
この関数は、DateTime64 に対する formatDateTime の逆関数です。
フォーマット String を使って String 型の argument を解析します。0000 年から 9999 年までの日付をサブ秒精度で表現できる DateTime64 型を返します (値は tick 数を表す Int64 として格納されるため、高い精度では扱える範囲がより狭くなります。精度 8 ではおよそ 4892 年まで、精度 9 では 1677 年から 2262 年までです) 。
構文
parseDateTime64(time_string, format[, timezone])引数
time_string— DateTime64 に解析する文字列。Stringformat—time_stringの解析方法を指定するフォーマット文字列。Stringtimezone— 省略可。タイムゾーン。String
戻り値
MySQL 形式のフォーマット文字列に従って入力文字列を解析した DateTime64 を返します。DateTime64
例
使用例
SELECT parseDateTime64('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')┌─parseDateTime64('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│ 2025-01-04 23:00:00.123000 │
└────────────────────────────────────────────────────────────────────┘parseDateTime64BestEffort
導入バージョン: v20.1.0
parseDateTimeBestEffort 関数と同様ですが、ミリ秒とマイクロ秒もパースし、DateTime64 データ型を返します。
構文
parseDateTime64BestEffort(time_string[, precision[, time_zone]])引数
time_string— 変換する日付または日時を含む String。Stringprecision— 任意。必要な精度。ミリ秒は3、マイクロ秒は6。デフォルト:3。UInt8time_zone— 任意。タイムゾーン。関数はtime_zoneに従ってtime_stringを解析します。String
戻り値
time_string を DateTime64 型に変換して返します。DateTime64
例
使用例
SELECT parseDateTime64BestEffort('2025-01-01') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346',6) AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346',3,'Asia/Istanbul') AS a, toTypeName(a) AS t
FORMAT PrettyCompactMonoBlock┌──────────────────────────a─┬─t──────────────────────────────┐
│ 2025-01-01 01:01:00.123000 │ DateTime64(3) │
│ 2025-01-01 00:00:00.000000 │ DateTime64(3) │
│ 2025-01-01 01:01:00.123460 │ DateTime64(6) │
│ 2025-12-31 22:01:00.123000 │ DateTime64(3, 'Asia/Istanbul') │
└────────────────────────────┴────────────────────────────────┘parseDateTime64BestEffortOrNull
導入バージョン: v20.1.0
parseDateTime64BestEffort と同様ですが、処理できない日付フォーマットに遭遇した場合は NULL を返します。
構文
parseDateTime64BestEffortOrNull(time_string[, precision[, time_zone]])引数
time_string— 変換する日付または日時を含む String。Stringprecision— 任意。必要な精度です。ミリ秒は3、マイクロ秒は6です。デフォルト:3。UInt8time_zone— 任意。タイムゾーン。関数はtime_zoneに従ってtime_stringを解析します。String
戻り値
time_string を DateTime64 に変換して返します。入力を解析できない場合は NULL を返します。DateTime64 または NULL
例
使用例
SELECT parseDateTime64BestEffortOrNull('2025-01-01 01:01:00.123') AS valid,
parseDateTime64BestEffortOrNull('invalid') AS invalid┌───────────────────valid─┬─invalid─┐
│ 2025-01-01 01:01:00.123 │ ᴺᵁᴸᴸ │
└─────────────────────────┴─────────┘parseDateTime64BestEffortOrZero
導入バージョン: v20.1.0
parseDateTime64BestEffort と同様ですが、処理できない日付フォーマットに遭遇した場合は、ゼロ日付またはゼロ日時を返します。
構文
parseDateTime64BestEffortOrZero(time_string[, precision[, time_zone]])引数
time_string— 変換する日付または日時を含む文字列。Stringprecision— 任意。必要な精度です。ミリ秒は3、マイクロ秒は6。デフォルトは3です。UInt8time_zone— 任意。タイムゾーンです。関数はこのタイムゾーンに従ってtime_stringを解析します。String
戻り値
time_string を DateTime64 に変換して返します。入力を解析できない場合は、ゼロ日付/日時 (1970-01-01 00:00:00.000) を返します。DateTime64
例
使用例
SELECT parseDateTime64BestEffortOrZero('2025-01-01 01:01:00.123') AS valid,
parseDateTime64BestEffortOrZero('invalid') AS invalid┌───────────────────valid─┬─────────────────invalid─┐
│ 2025-01-01 01:01:00.123 │ 1970-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘parseDateTime64BestEffortUS
導入バージョン: v22.8.0
曖昧な場合に US 日付形式 (MM/DD/YYYY など) を優先する点を除き、parseDateTime64BestEffort と同じです。
構文
parseDateTime64BestEffortUS(time_string [, precision [, time_zone]])引数
time_string— 変換対象の日付または日時を含む文字列。Stringprecision— 任意。必要な精度。ミリ秒は3、マイクロ秒は6。デフォルト:3。UInt8time_zone— 任意。タイムゾーン。関数はタイムゾーンに従ってtime_stringを解析します。String
戻り値
あいまいな場合は US 日付形式を優先して、time_stringをDateTime64に変換して返します。DateTime64
例
使用例
SELECT parseDateTime64BestEffortUS('02/10/2025 12:30:45.123') AS us_format,
parseDateTime64BestEffortUS('15/08/2025 10:15:30.456') AS fallback_to_standard┌───────────────us_format─┬────fallback_to_standard─┐
│ 2025-02-10 12:30:45.123 │ 2025-08-15 10:15:30.456 │
└─────────────────────────┴─────────────────────────┘parseDateTime64BestEffortUSOrNull
導入バージョン: v22.8.0
parseDateTime64BestEffort と同じですが、曖昧な場合には US 日付形式 (MM/DD/YYYY など) を優先し、処理できない日付形式に遭遇した場合は NULL を返します。
Syntax
parseDateTime64BestEffortUSOrNull(time_string[, precision[, time_zone]])引数
time_string— 変換する日付または日時を含む String。Stringprecision— 任意。必要な精度。3はミリ秒、6はマイクロ秒です。デフォルト:3。UInt8time_zone— 任意。タイムゾーン。関数はこのタイムゾーンに従ってtime_stringを解析します。String
戻り値
米国形式を優先して DateTime64 に変換された time_string を返します。入力を解析できない場合は NULL を返します。 DateTime64 または NULL
例
使用例
SELECT parseDateTime64BestEffortUSOrNull('02/10/2025 12:30:45.123') AS valid_us,
parseDateTime64BestEffortUSOrNull('invalid') AS invalid┌────────────────valid_us─┬─invalid─┐
│ 2025-02-10 12:30:45.123 │ ᴺᵁᴸᴸ │
└─────────────────────────┴─────────┘parseDateTime64BestEffortUSOrZero
導入バージョン: v22.8.0
parseDateTime64BestEffort と同様ですが、あいまいな場合は US 日付形式 (MM/DD/YYYY など) を優先し、処理できない日付形式に遭遇すると、ゼロ日付またはゼロの date time を返します。
構文
parseDateTime64BestEffortUSOrZero(time_string [, precision [, time_zone]])引数
time_string— 変換する日付または日時を含む String。Stringprecision— 任意。必要な精度です。ミリ秒は3、マイクロ秒は6。デフォルト値:3。UInt8time_zone— 任意。タイムゾーン。関数はtime_stringをこのタイムゾーンに従って解析します。String
戻り値
time_string を、米国形式を優先して DateTime64 に変換して返します。入力を解析できない場合は、ゼロ日付/日時 (1970-01-01 00:00:00.000) を返します。DateTime64
例
使用例
SELECT parseDateTime64BestEffortUSOrZero('02/10/2025 12:30:45.123') AS valid_us,
parseDateTime64BestEffortUSOrZero('invalid') AS invalid┌────────────────valid_us─┬─────────────────invalid─┐
│ 2025-02-10 12:30:45.123 │ 1970-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘parseDateTime64InJodaSyntax
導入バージョン: v24.10.0
Joda の日付フォーマット文字列に従って、秒未満の精度を持つ日付と時刻の文字列を解析します。
この関数は、DateTime64 に対する formatDateTimeInJodaSyntax の逆関数です。
Joda 形式のフォーマット String を使用して String 型の引数を解析します。戻り値は、0000 年から 9999 年までの日付を秒未満の精度で表現できる DateTime64 型です (値は Int64 の ticks 数として格納されるため、高い精度では扱える範囲がより狭くなります。精度 8 ではおよそ 4892 年まで、精度 9 では 1677 年から 2262 年までです) 。
フォーマットパターンについては、Joda Time documentation を参照してください。
構文
parseDateTime64InJodaSyntax(time_string, format[, timezone])引数
time_string— DateTime64 として解析する文字列。Stringformat—time_stringをどのように解析するかを指定する Joda 構文のフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
Joda スタイルのフォーマット文字列に従って入力文字列を解析した DateTime64 を返します。DateTime64
例
使用例
SELECT parseDateTime64InJodaSyntax('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')┌─parseDateTime64InJodaSyntax('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│ 2025-01-04 23:00:00.123 │
└───────────────────────────────────────────────────────────────────────────────────┘parseDateTime64InJodaSyntaxOrNull
導入バージョン: v24.10.0
parseDateTime64InJodaSyntax と同様ですが、解析できない日付形式に遭遇した場合は NULL を返します。
構文
parseDateTime64InJodaSyntaxOrNull(time_string, format[, timezone])引数
time_string— DateTime64 にパースする対象の文字列。Stringformat—time_stringをどのようにパースするかを指定する Joda 構文のフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
入力文字列をパースして得られた DateTime64 を返します。パースに失敗した場合は NULL を返します。Nullable(DateTime64)
例
使用例
SELECT parseDateTime64InJodaSyntaxOrNull('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')┌─parseDateTime64InJodaSyntaxOrNull('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│ 2025-01-04 23:00:00.123 │
└─────────────────────────────────────────────────────────────────────────────────────────┘parseDateTime64InJodaSyntaxOrZero
導入バージョン: v24.10.0
parseDateTime64InJodaSyntax と同様ですが、解析できない日付形式に遭遇した場合はゼロ日付を返します。
構文
parseDateTime64InJodaSyntaxOrZero(time_string, format[, timezone])引数
time_string— DateTime64 にパースする文字列。Stringformat—time_stringをどのようにパースするかを指定する Joda 構文のフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
入力文字列からパースされた DateTime64 を返します。パースに失敗した場合はゼロの DateTime64 を返します。DateTime64
例
使用例
SELECT parseDateTime64InJodaSyntaxOrZero('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')┌─parseDateTime64InJodaSyntaxOrZero('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│ 2025-01-04 23:00:00.123 │
└─────────────────────────────────────────────────────────────────────────────────────────┘parseDateTime64OrNull
導入バージョン: v24.11.0
parseDateTime64 と同様ですが、解析できない日付形式が指定された場合は NULL を返します。
構文
parseDateTime64OrNull(time_string, format[, timezone])引数
time_string— DateTime64 にパースする対象の文字列。Stringformat—time_stringをどのようにパースするかを指定するフォーマット文字列。Stringtimezone— 省略可能。タイムゾーン。String
戻り値
入力文字列からパースした DateTime64 を返します。パースに失敗した場合は NULL を返します。Nullable(DateTime64)
例
使用例
SELECT parseDateTime64OrNull('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')┌─parseDateTime64OrNull('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│ 2025-01-04 23:00:00.123000 │
└──────────────────────────────────────────────────────────────────────────┘parseDateTime64OrZero
導入バージョン: v24.11.0
parseDateTime64 と同様ですが、解釈できない日付フォーマットが指定された場合はゼロ日付を返します。
構文
parseDateTime64OrZero(time_string, format[, timezone])引数
time_string— DateTime64 にパースされる文字列。Stringformat—time_stringのパース方法を指定するフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
入力文字列をパースして得られた DateTime64 を返します。パースに失敗した場合は、ゼロの DateTime64 を返します。DateTime64
例
使用例
SELECT parseDateTime64OrZero('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')┌─parseDateTime64OrZero('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│ 2025-01-04 23:00:00.123000 │
└──────────────────────────────────────────────────────────────────────────┘parseDateTimeBestEffort
導入バージョン: v1.1.0
String 形式で表された日付と時刻を DateTime データ型に変換します。 この関数は、ISO 8601、RFC 1123 - 5.2.14 RFC-822 の日付と時刻の仕様、ClickHouse 独自およびその他いくつかの日付・時刻フォーマットを解析します。
サポートされている非標準フォーマット:
- 9~10 桁の Unix タイムスタンプ を含む文字列。
- 日付と時刻の部分を含む文字列:
YYYYMMDDhhmmss,DD/MM/YYYY hh:mm:ss,DD-MM-YY hh:mm,YYYY-MM-DD hh:mm:ssなど。 - 日付は含むが、時刻の部分は含まない文字列:
YYYY,YYYYMM,YYYY*MM,DD/MM/YYYY,DD-MM-YYなど。 - 日と時刻を含む文字列:
DD,DD hh,DD hh:mm。この場合、MMは01に置き換えられます。 - 日付と時刻に加えてタイムゾーンのオフセット情報を含む文字列:
YYYY-MM-DD hh:mm:ss ±h:mmなど。 - syslog タイムスタンプ:
Mmm dd hh:mm:ss。たとえば、Jun 9 14:20:32。
区切り文字を含むすべてのフォーマットで、この関数は月名のフルスペルまたは先頭 3 文字で表された月名を解析します。 年が指定されていない場合は、現在の年と見なされます。
構文
parseDateTimeBestEffort(time_string[, time_zone])引数
戻り値
time_string を DateTime として返します。DateTime
例
使用例
SELECT parseDateTimeBestEffort('23/10/2025 12:12:57') AS parseDateTimeBestEffort┌─parseDateTimeBestEffort─┐
│ 2025-10-23 12:12:57 │
└─────────────────────────┘タイムゾーン指定あり
SELECT parseDateTimeBestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul') AS parseDateTimeBestEffort┌─parseDateTimeBestEffort─┐
│ 2025-08-18 10:22:16 │
└─────────────────────────┘Unixタイムスタンプ
SELECT parseDateTimeBestEffort('1735689600') AS parseDateTimeBestEffort┌─parseDateTimeBestEffort─┐
│ 2025-01-01 00:00:00 │
└─────────────────────────┘parseDateTimeBestEffortOrNull
導入バージョン: v1.1.0
parseDateTimeBestEffort と同様ですが、処理できない日付フォーマットに遭遇した場合は NULL を返します。
この関数は、ISO 8601、RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse 独自のものを含む、いくつかの日付と時刻のフォーマットを解析します。
サポートされている非標準フォーマット:
- 9~10 桁の Unix タイムスタンプを含む文字列。
- 日付と時刻の部分を含む文字列:
YYYYMMDDhhmmss,DD/MM/YYYY hh:mm:ss,DD-MM-YY hh:mm,YYYY-MM-DD hh:mm:ssなど。 - 日付は含むが、時刻の部分を含まない文字列:
YYYY,YYYYMM,YYYY*MM,DD/MM/YYYY,DD-MM-YYなど。 - 日と時刻を含む文字列:
DD,DD hh,DD hh:mm。この場合、MMは01に置き換えられます。 - 日付と時刻に加えて、タイムゾーンオフセット情報を含む文字列:
YYYY-MM-DD hh:mm:ss ±h:mmなど。 - syslog のタイムスタンプ:
Mmm dd hh:mm:ss。たとえばJun 9 14:20:32。
区切り文字を含むすべてのフォーマットで、この関数は月名のフルスペルまたは先頭 3 文字で表記された月名を解析します。 年が指定されていない場合は、現在の年と見なされます。
構文
parseDateTimeBestEffortOrNull(time_string[, time_zone])引数
戻り値
time_string を DateTime として返します。入力を解析できない場合は NULL を返します。DateTime または NULL
例
使用例
SELECT parseDateTimeBestEffortOrNull('23/10/2025 12:12:57') AS valid,
parseDateTimeBestEffortOrNull('invalid') AS invalid┌───────────────valid─┬─invalid─┐
│ 2025-10-23 12:12:57 │ ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘parseDateTimeBestEffortOrZero
導入バージョン: v1.1.0
処理できない日付フォーマットを検出した場合に、ゼロ日付またはゼロ日時を返す点を除き、parseDateTimeBestEffort と同じです。
この関数は、ISO 8601、RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse およびその他いくつかの日付と時刻のフォーマットを解析します。
サポートされる非標準フォーマット:
- 9~10 桁の Unix タイムスタンプ を含む文字列。
- 日付と時刻の部分を含む文字列:
YYYYMMDDhhmmss,DD/MM/YYYY hh:mm:ss,DD-MM-YY hh:mm,YYYY-MM-DD hh:mm:ssなど。 - 日付は含むが時刻の部分がない文字列:
YYYY,YYYYMM,YYYY*MM,DD/MM/YYYY,DD-MM-YYなど。 - 日と時刻を含む文字列:
DD,DD hh,DD hh:mm。この場合、MMは01に置き換えられます。 - 日付と時刻に加えて time zone オフセット情報を含む文字列:
YYYY-MM-DD hh:mm:ss ±h:mmなど。 - syslog の timestamp:
Mmm dd hh:mm:ss。たとえばJun 9 14:20:32。
区切り文字を含むすべてのフォーマットについて、この関数は月名のフルスペル、または先頭 3 文字で表された月名を解析します。 年が指定されていない場合は、現在の年として扱われます。
構文
parseDateTimeBestEffortOrZero(time_string[, time_zone])引数
戻り値
time_string を DateTime として返します。入力を解析できない場合は、ゼロ日付/日時 (1970-01-01 または 1970-01-01 00:00:00) を返します。DateTime
例
使用例
SELECT parseDateTimeBestEffortOrZero('23/10/2025 12:12:57') AS valid,
parseDateTimeBestEffortOrZero('invalid') AS invalid┌───────────────valid─┬─────────────invalid─┐
│ 2025-10-23 12:12:57 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘parseDateTimeBestEffortUS
導入バージョン: v1.1.0
この関数は、ISO 日付フォーマット (例: YYYY-MM-DD hh:mm:ss) や、月と日の部分を曖昧さなく判別できるその他の日付フォーマット (例: YYYYMMDDhhmmss、YYYY-MM、DD hh、YYYY-MM-DD hh:mm:ss ±h:mm) については、parseDateTimeBestEffort と同様に動作します。
月と日の部分を曖昧さなく判別できない場合 (例: MM/DD/YYYY、MM-DD-YYYY、MM-DD-YY) は、DD/MM/YYYY、DD-MM-YYYY、DD-MM-YY ではなく、US 日付形式を優先します。
ただし、前述の説明の例外として、月が 12 より大きく 31 以下の場合、この関数は parseDateTimeBestEffort の動作にフォールバックします。たとえば 15/08/2020 は 2020-08-15 として解析されます。
構文
parseDateTimeBestEffortUS(time_string[, time_zone])引数
戻り値
曖昧な場合は US 日付形式を優先し、time_string を DateTime として返します。DateTime
例
使用例
SELECT parseDateTimeBestEffortUS('02/10/2025') AS us_format,
parseDateTimeBestEffortUS('15/08/2025') AS fallback_to_standard┌───────────us_format─┬─fallback_to_standard─┐
│ 2025-02-10 00:00:00 │ 2025-08-15 00:00:00 │
└─────────────────────┴──────────────────────┘parseDateTimeBestEffortUSOrNull
導入バージョン: v1.1.0
処理できない日付フォーマットに遭遇した場合に NULL を返す点を除き、parseDateTimeBestEffortUS 関数と同じです。
この関数は ISO 日付フォーマットに対しては parseDateTimeBestEffort と同様に動作しますが、曖昧なケースでは US 日付形式を優先し、パースエラーが発生した場合は NULL を返します。
構文
parseDateTimeBestEffortUSOrNull(time_string[, time_zone])引数
戻り値
time_string を US 形式優先で DateTime として返します。入力をパースできない場合は NULL を返します。DateTime または NULL
例
使用例
SELECT parseDateTimeBestEffortUSOrNull('02/10/2025') AS valid_us,
parseDateTimeBestEffortUSOrNull('invalid') AS invalid┌────────────valid_us─┬─invalid─┐
│ 2025-02-10 00:00:00 │ ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘parseDateTimeBestEffortUSOrZero
導入バージョン: v1.1.0
parseDateTimeBestEffortUS 関数と同様ですが、処理できない日付フォーマットに遭遇した場合は、ゼロ日付 (1970-01-01) または日時のゼロ日付 (1970-01-01 00:00:00) を返します。
この関数は ISO 日付フォーマットに対しては parseDateTimeBestEffort と同様に動作しますが、曖昧なケースでは US 日付形式を優先し、パースエラー時にはゼロを返します。
構文
parseDateTimeBestEffortUSOrZero(time_string[, time_zone])引数
戻り値
US 形式を優先して、time_string を DateTime として返します。入力を解析できない場合は、ゼロ日付/日時 (1970-01-01 または 1970-01-01 00:00:00) を返します。DateTime
例
使用例
SELECT parseDateTimeBestEffortUSOrZero('02/10/2025') AS valid_us,
parseDateTimeBestEffortUSOrZero('invalid') AS invalid┌────────────valid_us─┬─────────────invalid─┐
│ 2025-02-10 00:00:00 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘parseDateTimeInJodaSyntax
導入バージョン: v23.3.0
Joda の日付フォーマット文字列に従って、日付と時刻の文字列を解析します。
この関数は formatDateTimeInJodaSyntax の逆関数です。
Joda スタイルのフォーマット String を使用して String 型の argument を解析します。戻り値は DateTime 型です。
フォーマットパターンについては、Joda Time documentation を参照してください。
構文
parseDateTimeInJodaSyntax(time_string, format[, timezone])引数
time_string— DateTime に解析される文字列。Stringformat—time_stringをどのように解析するかを指定する Joda 構文のフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
Joda スタイルのフォーマット文字列に従って入力文字列から解析された DateTime を返します。 DateTime
例
使用例
SELECT parseDateTimeInJodaSyntax('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')┌─parseDateTimeInJodaSyntax('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│ 2025-01-04 23:00:00 │
└─────────────────────────────────────────────────────────────────────────┘parseDateTimeInJodaSyntaxOrNull
導入バージョン: v23.3.0
parseDateTimeInJodaSyntax と同じですが、解析不能な日付フォーマットに遭遇した場合は NULL を返します。
構文
parseDateTimeInJodaSyntaxOrNull(time_string, format[, timezone])引数
time_string— DateTime にパースされる文字列。Stringformat—time_stringのパース方法を指定する、Joda 構文のフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
入力文字列からパースされた DateTime を返します。パースに失敗した場合は NULL を返します。Nullable(DateTime)
例
使用例
SELECT parseDateTimeInJodaSyntaxOrNull('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')┌─parseDateTimeInJodaSyntaxOrNull('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│ 2025-01-04 23:00:00 │
└───────────────────────────────────────────────────────────────────────────────┘parseDateTimeInJodaSyntaxOrZero
導入バージョン: v23.3.0
parseDateTimeInJodaSyntax と同じですが、解析できない日付形式が指定された場合はゼロ日付を返します。
構文
parseDateTimeInJodaSyntaxOrZero(time_string, format[, timezone])引数
time_string— DateTime にパースする文字列。Stringformat—time_stringのパース方法を指定する、Joda 構文 の format string。Stringtimezone— 省略可能。タイムゾーン。String
戻り値
入力文字列からパースされた DateTime を返します。パースに失敗した場合はゼロ値の DateTime を返します。DateTime
例
使用例
SELECT parseDateTimeInJodaSyntaxOrZero('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')┌─parseDateTimeInJodaSyntaxOrZero('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│ 2025-01-04 23:00:00 │
└───────────────────────────────────────────────────────────────────────────────┘parseDateTimeOrNull
導入バージョン: v23.3.0
parseDateTime と同様ですが、解釈できない日付形式の場合は NULL を返します。
構文
parseDateTimeOrNull(time_string, format[, timezone])別名: str_to_date
引数
time_string— DateTime にパースする対象の文字列。Stringformat—time_stringをどのようにパースするかを指定するフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
入力文字列をパースして得られた DateTime を返します。パースに失敗した場合は NULL を返します。Nullable(DateTime)
例
使用例
SELECT parseDateTimeOrNull('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')┌─parseDateTimeOrNull('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│ 2025-01-04 23:00:00 │
└─────────────────────────────────────────────────────────────────┘parseDateTimeOrZero
導入バージョン: v23.3.0
parseDateTime と同様ですが、パースできない日付形式に遭遇した場合はゼロ日付を返します。
構文
parseDateTimeOrZero(time_string, format[, timezone])引数
time_string— DateTime にパースする文字列。Stringformat—time_stringをどのようにパースするかを指定するフォーマット文字列。Stringtimezone— 任意。タイムゾーン。String
戻り値
入力文字列からパースされた DateTime を返します。パースに失敗した場合は、ゼロ値の DateTime を返します。DateTime
例
使用例
SELECT parseDateTimeOrZero('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')┌─parseDateTimeOrZero('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│ 2025-01-04 23:00:00 │
└─────────────────────────────────────────────────────────────────┘reinterpret
導入バージョン: v1.1.0
指定された値 x のメモリ上のバイト列をそのまま使用し、宛先の型として再解釈します。
宛先の型が String の場合、ソースの Array がサポートされるのは、その要素型が固定サイズで、かつメモリ上で連続している場合 (たとえば Array(UInt8) や Array(FixedString(2))) に限られます。このとき、各要素のバイトはネイティブなメモリ上の順序のままそのままコピーされるため、どのアーキテクチャでも、結果を元の Array 型へ再解釈し直すことができます。要素が可変長の Array (たとえば Array(String)) や、要素が Nullable の Array (たとえば Array(Nullable(Int32))) はサポートされません。
構文
reinterpret(x, type)引数
x— 再解釈する値。Stringに再解釈する場合、元のArrayは固定サイズで連続した要素を持っている必要があります。Anytype— 変換先の型。配列の場合、配列の要素型は固定長型である必要があります。String
戻り値
変換先の型の値。Any
例
使用例
SELECT reinterpret(toInt8(-1), 'UInt8') AS int_to_uint,
reinterpret(toInt8(1), 'Float32') AS int_to_float,
reinterpret('1', 'UInt32') AS string_to_int┌─int_to_uint─┬─int_to_float─┬─string_to_int─┐
│ 255 │ 1e-45 │ 49 │
└─────────────┴──────────────┴───────────────┘Array の例
SELECT reinterpret(x'3108b4403108d4403108b4403108d440', 'Array(Float32)') AS string_to_array_of_Float32┌─string_to_array_of_Float32─┐
│ [5.626,6.626,5.626,6.626] │
└────────────────────────────┘Array から String への変換例
SELECT hex(reinterpret([toUInt8(1), toUInt8(2), toUInt8(255)]::Array(UInt8), 'String')) AS array_of_UInt8_to_string┌─array_of_UInt8_to_string─┐
│ 0102FF │
└──────────────────────────┘reinterpretAsDate
導入バージョン: v1.1.0
入力値を Date 型の値として再解釈します (リトルエンディアン順を前提) 。これは、Unix エポック 1970-01-01 の開始からの日数を表します
構文
reinterpretAsDate(x)引数
戻り値
Date。Date
例
使用例
SELECT reinterpretAsDate(65), reinterpretAsDate('A')┌─reinterpretAsDate(65)─┬─reinterpretAsDate('A')─┐
│ 1970-03-07 │ 1970-03-07 │
└───────────────────────┴────────────────────────┘reinterpretAsDateTime
導入バージョン: v1.1.0
入力値を DateTime 値として再解釈します (リトルエンディアン順を前提) 。この値は Unix エポック 1970-01-01 の開始からの日数を表します。
構文
reinterpretAsDateTime(x)引数
戻り値
日付と時刻。DateTime
例
使用例
SELECT reinterpretAsDateTime(65), reinterpretAsDateTime('A')┌─reinterpretAsDateTime(65)─┬─reinterpretAsDateTime('A')─┐
│ 1970-01-01 00:01:05 │ 1970-01-01 00:01:05 │
└───────────────────────────┴────────────────────────────┘reinterpretAsFixedString
導入バージョン: v1.1.0
入力値を固定長文字列として再解釈します (リトルエンディアン順であると仮定します) 。 末尾のヌルバイトは無視されます。たとえば、UInt32 の値 255 に対して、この関数は 1 文字の文字列を返します。
構文
reinterpretAsFixedString(x)引数
戻り値
x を表すバイトを含む固定長文字列。FixedString
例
使用例
-- The result is a sequence of bytes, so it is shown with `hex`.
SELECT
hex(reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05'))),
hex(reinterpretAsFixedString(toDate('1970-03-07')))┌─hex(reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05')))─┬─hex(reinterpretAsFixedString(toDate('1970-03-07')))─┐
│ 510E0000 │ 4100 │
└──────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘reinterpretAsFloat32
導入バージョン: v1.1.0
入力値を Float32 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、結果は未定義です。
構文
reinterpretAsFloat32(x)引数
戻り値
x を再解釈した値を返します。Float32
例
使用例
SELECT reinterpretAsUInt32(toFloat32(0.2)) AS x, reinterpretAsFloat32(x)┌──────────x─┬─reinterpretAsFloat32(x)─┐
│ 1045220557 │ 0.2 │
└────────────┴─────────────────────────┘reinterpretAsFloat64
導入バージョン: v1.1.0
入力値をFloat64型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、出力は未定義です。
構文
reinterpretAsFloat64(x)引数
戻り値
再解釈された値 x を返します。Float64
例
使用例
SELECT reinterpretAsUInt64(toFloat64(0.2)) AS x, reinterpretAsFloat64(x)┌───────────────────x─┬─reinterpretAsFloat64(x)─┐
│ 4596373779694328218 │ 0.2 │
└─────────────────────┴─────────────────────────┘reinterpretAsInt128
導入バージョン: v1.1.0
入力値を Int128 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表せない場合、結果は未定義です。
構文
reinterpretAsInt128(x)引数
戻り値
再解釈された値 x を返します。Int128
例
使用例
SELECT
toInt64(257) AS x,
toTypeName(x),
reinterpretAsInt128(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int64 │ 257 │ Int128 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsInt16
導入バージョン: v1.1.0
入力値を Int16 型として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、出力は未定義になります。
構文
reinterpretAsInt16(x)引数
戻り値
再解釈された値 x を返します。Int16
例
使用例
SELECT
toInt8(257) AS x,
toTypeName(x),
reinterpretAsInt16(x) AS res,
toTypeName(res)┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ Int8 │ 1 │ Int16 │
└───┴───────────────┴─────┴─────────────────┘reinterpretAsInt256
導入バージョン: v1.1.0
入力値を Int256 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。対象の型で入力型を表現できない場合、出力は未定義になります。
構文
reinterpretAsInt256(x)引数
戻り値
再解釈された x の値を返します。Int256
例
使用例
SELECT
toInt128(257) AS x,
toTypeName(x),
reinterpretAsInt256(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int128 │ 257 │ Int256 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsInt32
導入バージョン: v1.1.0
入力値を Int32 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。対象の型で入力型を表現できない場合、結果は未定義です。
構文
reinterpretAsInt32(x)引数
戻り値
再解釈された x の値を返します。Int32
例
使用例
SELECT
toInt16(257) AS x,
toTypeName(x),
reinterpretAsInt32(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int16 │ 257 │ Int32 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsInt64
導入バージョン: v1.1.0
入力値を Int64 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、出力は未定義です。
構文
reinterpretAsInt64(x)引数
戻り値
再解釈した値 x を返します。Int64
例
使用例
SELECT
toInt32(257) AS x,
toTypeName(x),
reinterpretAsInt64(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int32 │ 257 │ Int64 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsInt8
導入バージョン: v1.1.0
入力値を Int8 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、出力は未定義です。
構文
reinterpretAsInt8(x)引数
戻り値
再解釈された値 x を返します。Int8
例
使用例
SELECT
toUInt8(257) AS x,
toTypeName(x),
reinterpretAsInt8(x) AS res,
toTypeName(res)┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8 │ 1 │ Int8 │
└───┴───────────────┴─────┴─────────────────┘reinterpretAsString
導入バージョン: v1.1.0
入力値を文字列として再解釈します。
スカラー値では、バイト順序はリトルエンディアンに正規化され、末尾のヌルバイトは無視されます。たとえば、UInt32 型の値 255 に対しては、1 文字の文字列を返します。
固定サイズ要素の Array では、要素のバイト列は、末尾のゼロバイトを削除せず、リトルエンディアンへの正規化も行わずに、ネイティブなインメモリ順序のままそのままコピーされます。そのため、結果はどのアーキテクチャでも元の Array 型として再解釈できます。
構文
reinterpretAsString(x)引数
戻り値
x を表すバイト列を含む文字列。String
例
使用例
-- The result is a sequence of bytes, so it is shown with `hex`.
SELECT
hex(reinterpretAsString(toDateTime('1970-01-01 01:01:05'))),
hex(reinterpretAsString(toDate('1970-03-07')))┌─hex(reinterpretAsString(toDateTime('1970-01-01 01:01:05')))─┬─hex(reinterpretAsString(toDate('1970-03-07')))─┐
│ 510E │ 41 │
└─────────────────────────────────────────────────────────────┴────────────────────────────────────────────────┘Array を String に変換する例
SELECT hex(reinterpretAsString([toUInt8(1), toUInt8(2), toUInt8(255)]::Array(UInt8))) AS array_of_UInt8_to_string┌─array_of_UInt8_to_string─┐
│ 0102FF │
└──────────────────────────┘reinterpretAsUInt128
導入バージョン: v1.1.0
入力値をUInt128型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、出力は未定義です。
構文
reinterpretAsUInt128(x)引数
戻り値
再解釈後の値 x を返します。UInt128
例
使用例
SELECT
toUInt64(257) AS x,
toTypeName(x),
reinterpretAsUInt128(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt64 │ 257 │ UInt128 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsUInt16
導入バージョン: v1.1.0
入力値を UInt16 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、出力は未定義です。
構文
reinterpretAsUInt16(x)引数
戻り値
再解釈された値 x を返します。UInt16
例
使用例
SELECT
toUInt8(257) AS x,
toTypeName(x),
reinterpretAsUInt16(x) AS res,
toTypeName(res)┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8 │ 1 │ UInt16 │
└───┴───────────────┴─────┴─────────────────┘reinterpretAsUInt256
導入バージョン: v1.1.0
入力値を UInt256 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。対象の型で入力型を表現できない場合、出力は未定義です。
構文
reinterpretAsUInt256(x)引数
x— UInt256 として再解釈する対象の値。(U)Int*またはFloat*またはDateまたはDateTimeまたはUUIDまたはStringまたはFixedString
戻り値
再解釈後の値 x を返します。UInt256
例
使用例
SELECT
toUInt128(257) AS x,
toTypeName(x),
reinterpretAsUInt256(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt128 │ 257 │ UInt256 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsUInt32
導入バージョン: v1.1.0
入力値を UInt32 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、出力は未定義です。
構文
reinterpretAsUInt32(x)引数
x— UInt32 として再解釈する対象の値。(U)Int*またはFloat*またはDateまたはDateTimeまたはUUIDまたはStringまたはFixedString
戻り値
再解釈された値 x を返します。UInt32
例
使用例
SELECT
toUInt16(257) AS x,
toTypeName(x),
reinterpretAsUInt32(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt16 │ 257 │ UInt32 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsUInt64
導入バージョン: v1.1.0
入力値を UInt64 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力型を表現できない場合、出力は未定義です。
構文
reinterpretAsUInt64(x)引数
x— UInt64 として再解釈される値。Int*またはUInt*またはFloat*またはDateまたはDateTimeまたはUUIDまたはStringまたはFixedString
戻り値
x を再解釈した値を返します。UInt64
例
使用例
SELECT
toUInt32(257) AS x,
toTypeName(x),
reinterpretAsUInt64(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt32 │ 257 │ UInt64 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsUInt8
導入バージョン: v1.1.0
入力値を UInt8 型の値として再解釈します。
CAST とは異なり、この関数は元の値を保持しようとはしません。変換先の型で入力値を表現できない場合、出力は未定義です。
構文
reinterpretAsUInt8(x)引数
戻り値
再解釈後の値 x を返します。UInt8
例
使用例
SELECT
toInt8(-1) AS val,
toTypeName(val),
reinterpretAsUInt8(val) AS res,
toTypeName(res);┌─val─┬─toTypeName(val)─┬─res─┬─toTypeName(res)─┐
│ -1 │ Int8 │ 255 │ UInt8 │
└─────┴─────────────────┴─────┴─────────────────┘reinterpretAsUUID
導入バージョン: v1.1.0
16バイトの文字列を受け取り、各8バイトの半分をリトルエンディアンのバイト順として解釈し、UUID を返します。文字列の長さが足りない場合、この関数は末尾に必要な数の null byte が追加されたものとして動作します。文字列が16バイトを超える場合、末尾の余分なバイトは無視されます。
構文
reinterpretAsUUID(fixed_string)引数
fixed_string— ビッグエンディアン形式のバイト列。FixedString
戻り値
UUID 型の値。UUID
例
文字列から UUID
SELECT reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))┌─reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))─┐
│ 08090a0b-0c0d-0e0f-0001-020304050607 │
└───────────────────────────────────────────────────────────────────────┘toBFloat16
導入バージョン: v1.1.0
入力値を BFloat16 型の値に変換します。 エラーが発生した場合は例外をスローします。
関連項目:
構文
toBFloat16(expr)引数
expr— 数値またはその文字列表現を返す式。Expression
戻り値
16ビットの brain-float 値を返します。 BFloat16
例
使用例
SELECT
toBFloat16(toFloat32(42.7)),
toBFloat16(toFloat32('42.7')),
toBFloat16('42.7')
FORMAT Vertical;Row 1:
──────
toBFloat16(toFloat32(42.7)): 42.5
toBFloat16(toFloat32('42.7')): 42.5
toBFloat16('42.7'): 42.5toBFloat16OrNull
導入バージョン: v1.1.0
String 型の入力値を BFloat16 型の値に変換します。 文字列が浮動小数点数値を表していない場合、この関数は NULL を返します。
サポートされる引数:
- 数値を表す文字列。
サポートされない引数 (NULL を返します):
- 2進数および16進数を表す文字列。
- 数値。
関連項目:
構文
toBFloat16OrNull(x)引数
x— 数値の文字列表現。String
戻り値
16 ビットの brain-float 値を返します。変換できない場合は NULL を返します。BFloat16 または NULL
例
使用例
SELECT toBFloat16OrNull('0x5E'), -- unsupported arguments
toBFloat16OrNull('12.3'), -- typical use
toBFloat16OrNull('12.3456789') -- silent loss of precision\N 12.25 12.3125toBFloat16OrZero
導入バージョン: v1.1.0
String 型の入力値を BFloat16 型の値に変換します。 文字列が浮動小数点数を表していない場合、この関数はゼロを返します。
サポートされる引数:
- 数値を表す文字列。
サポートされない引数 (0 を返します):
- 2進数および16進数を表す文字列。
- 数値。
関連項目:
構文
toBFloat16OrZero(x)引数
x— 数値の文字列表現。String
戻り値
16 ビットの brain-float 値を返します。そうでない場合は 0 を返します。 BFloat16
例
使用例
SELECT toBFloat16OrZero('0x5E'), -- unsupported arguments
toBFloat16OrZero('12.3'), -- typical use
toBFloat16OrZero('12.3456789') -- silent loss of precision0 12.25 12.3125toBool
導入バージョン: v22.2.0
入力値を Bool 型の値に変換します。
構文
toBool(expr)引数
expr— 数値または文字列を返す式。文字列の場合は、'true' または 'false' を受け付けます (大文字と小文字は区別されません) 。(U)Int*またはFloat*またはStringまたはExpression
戻り値
引数の評価結果に応じて true または false を返します。 Bool
例
使用例
SELECT
toBool(toUInt8(1)),
toBool(toInt8(-1)),
toBool(toFloat32(1.01)),
toBool('true'),
toBool('false'),
toBool('FALSE')
FORMAT VerticalRow 1:
──────
toBool(toUInt8(1)): true
toBool(toInt8(-1)): true
toBool(toFloat32(1.01)): true
toBool('true'): true
toBool('false'): false
toBool('FALSE'): falsetoDate
導入バージョン: v1.1.0
入力値を Date 型に変換します。
String、FixedString、DateTime、または数値型から変換できます。
構文
toDate(x)引数
x— 変換対象の入力値。StringまたはFixedStringまたはDateTimeまたは(U)Int*またはFloat*
戻り値
変換後の入力値を返します。Date
例
String から Date への変換
SELECT toDate('2025-04-15')2025-04-15DateTimeをDateに変換
SELECT toDate(toDateTime('2025-04-15 10:30:00'))2025-04-15整数をDateに変換
SELECT toDate(20297)2025-07-28toDate32
導入バージョン: v21.9.0
引数を Date32 データ型に変換します。
値が [0000-01-01, 9999-12-31] の範囲外の場合、toDate32 は Date32 でサポートされる境界値を返します。
引数の型が Date の場合は、その範囲が考慮されます。
構文
toDate32(expr)引数
戻り値
日付を返します。Date32
例
範囲内
SELECT toDate32('2025-01-01') AS value, toTypeName(value)
FORMAT VerticalRow 1:
──────
value: 2025-01-01
toTypeName(value): Date321900年以前
SELECT toDate32('1899-01-01') AS value, toTypeName(value)
FORMAT VerticalRow 1:
──────
value: 1899-01-01
toTypeName(value): Date32toDate32OrDefault
導入バージョン: v21.11.0
引数を Date32 型に変換します。引数を変換できない場合 (Date32 の範囲外の数値を含む) 、関数はデフォルト値を返します。これは第 2 引数が指定されている場合はその値、指定されていない場合は Date32 の従来のデフォルト値である 1900-01-01 です (Date32 の下限値ではなく、下限値は 0000-01-01 です)。引数が Date 型の場合は、その型の範囲が考慮されます。
toDate32 とは異なり、この関数は範囲外の数値引数を Date32 の境界値に飽和させません。このような引数は変換不能として扱われます。
構文
toDate32OrDefault(expr[, default])引数
戻り値
成功した場合は Date32 型の値を返します。失敗した場合は、default が指定されていればその値を、指定されていなければ 1900-01-01 を返します。Date32
例
変換に成功した場合
SELECT toDate32OrDefault('1930-01-01', toDate32('2020-01-01'))1930-01-01変換に失敗した場合
SELECT toDate32OrDefault('xx1930-01-01', toDate32('2020-01-01'))2020-01-01範囲外の数値
SELECT toDate32OrDefault(toUInt64(18446744073709551615), toDate32('2020-01-01'))2020-01-01toDate32OrNull
導入バージョン: v21.9.0
入力値を Date32 型の値に変換しますが、無効な引数が渡された場合は NULL を返します。
toDate32 と同じですが、無効な引数が渡された場合は NULL を返します。
構文
toDate32OrNull(x)引数
x— 日付の文字列表現。String
戻り値
成功した場合は Date32 値を返し、失敗した場合は NULL を返します。Date32 または NULL
例
使用例
SELECT toDate32OrNull('2025-01-01'), toDate32OrNull('invalid')┌─toDate32OrNull('2025-01-01')─┬─toDate32OrNull('invalid')─┐
│ 2025-01-01 │ ᴺᵁᴸᴸ │
└──────────────────────────────┴───────────────────────────┘toDate32OrZero
導入バージョン: v21.9.0
入力値を Date32 型の値に変換します。無効な引数を受け取った場合は、デフォルト値 1900-01-01 を返します。
toDate32 と同様ですが、無効な引数を受け取った場合は 1900-01-01 を返します。
1900-01-01 は無効な入力に対する歴史的なデフォルト値であり、0000-01-01 である Date32 の下限値ではないことに注意してください。
関連項目:
構文
toDate32OrZero(x)引数
x— 日付の文字列表現。String
戻り値
成功した場合は Date32 値を返し、失敗した場合は無効な入力に対する従来のデフォルト値 (1900-01-01) を返します。Date32
例
使用例
SELECT toDate32OrZero('2025-01-01'), toDate32OrZero('')┌─toDate32OrZero('2025-01-01')─┬─toDate32OrZero('')─┐
│ 2025-01-01 │ 1900-01-01 │
└──────────────────────────────┴────────────────────┘toDateOrDefault
導入バージョン: v21.11.0
toDate と同様ですが、変換に失敗した場合はデフォルト値を返します。デフォルト値には、第2引数が指定されている場合はその値が、指定されていない場合は Date の下限値が使用されます。
構文
toDateOrDefault(expr[, default])引数
戻り値
成功した場合は Date 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 1970-01-01 を返します。Date
例
変換に成功した場合
SELECT toDateOrDefault('2022-12-30')2022-12-30変換に失敗
SELECT toDateOrDefault('', CAST('2023-01-01', 'Date'))2023-01-01toDateOrNull
導入バージョン: v1.1.0
入力値を Date 型の値に変換しますが、無効な引数が渡された場合は NULL を返します。
toDate と同様ですが、無効な引数が渡された場合は NULL を返します。
整数引数は toDate と同じ方法で解釈されます (65535 以下の場合は 1970-01-01 からの日数、それ以外の場合は Unix timestamp) 。また、Date 型の範囲外である場合は NULL を返します。
構文
toDateOrNull(x)引数
x— 日付の文字列表現、または日数を表す整数、あるいは Unix timestamp です。Stringまたは(U)Int8/16/32/64
戻り値
成功した場合は Date 値を返し、失敗した場合は NULL を返します。Date または NULL
例
使用例
SELECT toDateOrNull('2025-12-30'), toDateOrNull('invalid')┌─toDateOrNull('2025-12-30')─┬─toDateOrNull('invalid')─┐
│ 2025-12-30 │ ᴺᵁᴸᴸ │
└────────────────────────────┴─────────────────────────┘toDateOrZero
導入バージョン: v1.1.0
入力値を Date 型の値に変換します。無効な引数を受け取った場合は、Date の下限値を返します。
toDate と同様ですが、無効な引数を受け取った場合は Date の下限値を返します。
関連項目:
構文
toDateOrZero(x)引数
x— 日付の文字列表現。String
戻り値
成功した場合は Date 値を、失敗した場合は Date の下限値 (1970-01-01) を返します。Date
例
使用例
SELECT toDateOrZero('2025-12-30'), toDateOrZero('')┌─toDateOrZero('2025-12-30')─┬─toDateOrZero('')─┐
│ 2025-12-30 │ 1970-01-01 │
└────────────────────────────┴──────────────────┘toDateTime
導入バージョン: v1.1.0
入力値を DateTime 型に変換します。
構文
toDateTime(expr[, time_zone])引数
戻り値
日時を返します。DateTime
例
使用例
SELECT toDateTime('2025-01-01 00:00:00'), toDateTime(1735689600, 'UTC')
FORMAT VerticalRow 1:
──────
toDateTime('2025-01-01 00:00:00'): 2025-01-01 00:00:00
toDateTime(1735689600, 'UTC'): 2025-01-01 00:00:00toDateTime32
導入バージョン: v20.9.0
入力値を DateTime 型に変換します。
String、FixedString、Date、Date32、Time、DateTime、DateTime64、または数値型 ((U)Int8、(U)Int16、(U)Int32、(U)Int64、BFloat16、Float32、Float64) からの変換をサポートします。Decimal および Time64 の値はサポートされておらず、例外が発生します。Time 型および (U)Int128/(U)Int256 などのワイド整数型では、飽和ではなくラップアラウンドが発生します。
DateTime32 は DateTime の alias であり、1970-01-01 00:00:00 から 2106-02-07 06:28:15 までの日付をサポートします。
文字列、または上記の飽和する数値型から変換する場合、この範囲外の値は範囲の境界値に飽和されます。非有限の浮動小数点値 (NaN、inf、-inf) は変換できず、例外が発生します。
Date32 や DateTime64 など、他の日付と時刻型からの変換は、date_time_overflow_behavior 設定に従います。デフォルトの ignore モードではラップアラウンドした値が生成される場合があり、saturate では値が範囲の境界値に制限され、throw では例外が発生します。
構文
toDateTime32(x[, timezone])引数
x— 変換する入力値。String、FixedString、(U)Int*、Float*、BFloat16、Date、Date32、Time、DateTime、またはDateTime64timezone— 省略可能。返されるDateTime値のタイムゾーン。String
戻り値
変換後の入力値を返します。DateTime
例
文字列から
SELECT toDateTime32('2025-01-01 00:00:00') AS value, toTypeName(value);┌───────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00 │ DateTime │
└─────────────────────┴───────────────────┘Unix timestampから
SELECT toDateTime32(1735689600, 'UTC') AS value, toTypeName(value);┌───────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00 │ DateTime('UTC') │
└─────────────────────┴───────────────────┘タイムゾーンを指定する場合
SELECT toDateTime32('2025-01-01 00:00:00', 'Asia/Istanbul') AS value, toTypeName(value);┌───────────────value─┬─toTypeName(value)─────────┐
│ 2025-01-01 00:00:00 │ DateTime('Asia/Istanbul') │
└─────────────────────┴───────────────────────────┘toDateTime64
導入バージョン: v20.1.0
入力値を DateTime64 型の値に変換します。
構文
toDateTime64(expr, scale[, timezone])引数
expr— 数値、または数値の文字列表現を返す式。式scale— ティックサイズ (精度) : 10^(-scale) Seconds。UInt8timezone— 任意。指定したDateTime64オブジェクトのタイムゾーン。String
戻り値
秒未満の精度を持つ日付と時刻を返します。DateTime64
例
値が範囲内にある
SELECT toDateTime64('2025-01-01 00:00:00.000', 3) AS value, toTypeName(value);┌───────────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3) │
└─────────────────────────┴───────────────────┘精度を指定した Decimal として
SELECT toDateTime64(1546300800.000, 3) AS value, toTypeName(value);
-- Without the decimal point the value is still treated as Unix Timestamp in seconds
SELECT toDateTime64(1546300800000, 3) AS value, toTypeName(value);┌───────────────────value─┬─toTypeName(value)─┐
│ 2019-01-01 00:00:00.000 │ DateTime64(3) │
└─────────────────────────┴───────────────────┘
┌───────────────────value─┬─toTypeName(value)─┐
│ 9999-12-31 23:59:59.000 │ DateTime64(3) │
└─────────────────────────┴───────────────────┘タイムゾーンあり
SELECT toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul') AS value, toTypeName(value);┌───────────────────value─┬─toTypeName(value)──────────────┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3, 'Asia/Istanbul') │
└─────────────────────────┴────────────────────────────────┘toDateTime64OrDefault
導入バージョン: v21.11.0
toDateTime64 と同様に、この関数は入力値を DateTime64 型の値に変換しますが、 無効な引数を受け取った場合は、DateTime64 のデフォルト値 または指定されたデフォルト値を返します。
構文
toDateTime64OrDefault(expr, scale[, timezone, default])引数
expr— 数値、または数値の文字列表現を返す式。Stringまたは(U)Int*またはFloat*scale— ティックサイズ (精度) : 10^-precision Seconds。UInt8timezone— 任意。タイムゾーン。Stringdefault— 任意。パースに失敗した場合に返すデフォルト値。DateTime64
戻り値
成功した場合は DateTime64 型の値を返し、失敗した場合は、指定されていればデフォルト値を、指定されていなければ 1970-01-01 00:00:00.000 を返します。DateTime64
例
変換に成功した場合
SELECT toDateTime64OrDefault('1976-10-18 00:00:00.30', 3)1976-10-18 00:00:00.300変換失敗
SELECT toDateTime64OrDefault('1976-10-18 00:00:00 30', 3, 'UTC', toDateTime64('2001-01-01 00:00:00.00',3))2001-01-01 00:00:00.000toDateTime64OrNull
導入バージョン: v20.1.0
入力値を DateTime64 型の値に変換します。無効な引数を受け取った場合は NULL を返します。
toDateTime64 と同様ですが、無効な引数を受け取った場合は NULL を返します。
整数の引数は、秒単位の Unix timestamp として解釈され、DateTime64 型の範囲外の場合は NULL を返します。
構文
toDateTime64OrNull(x[, precision[, timezone]])引数
x— 日時 (秒未満の精度を含む) の文字列表現、または整数の Unix timestamp。Stringまたは(U)Int8/16/32/64precision— オプション。返される値の秒未満の精度。UInt8timezone— オプション。返される値のタイムゾーン。String
戻り値
成功した場合は DateTime64 値を返し、失敗した場合は NULL を返します。DateTime64 または NULL
例
使用例
SELECT toDateTime64OrNull('2025-12-30 13:44:17.123'), toDateTime64OrNull('invalid')┌─toDateTime64OrNull('2025-12-30 13:44:17.123')─┬─toDateTime64OrNull('invalid')─┐
│ 2025-12-30 13:44:17.123 │ ᴺᵁᴸᴸ │
└───────────────────────────────────────────────┴───────────────────────────────┘toDateTime64OrZero
導入バージョン: v20.1.0
入力値を DateTime64 型の値に変換します。ただし、無効な引数を受け取った場合は DateTime64 の下限値を返します。 toDateTime64 と同様ですが、無効な引数を受け取った場合は DateTime64 の下限値を返します。
関連項目:
構文
toDateTime64OrZero(x)引数
x— 日時を秒未満の精度まで含む文字列表現。String
戻り値
成功した場合は DateTime64 値を返し、失敗した場合は DateTime64 の下限値 (1970-01-01 00:00:00.000) を返します。DateTime64
例
使用例
SELECT toDateTime64OrZero('2025-12-30 13:44:17.123'), toDateTime64OrZero('invalid')┌─toDateTime64OrZero('2025-12-30 13:44:17.123')─┬─toDateTime64OrZero('invalid')─┐
│ 2025-12-30 13:44:17.123 │ 1970-01-01 00:00:00.000 │
└───────────────────────────────────────────────┴───────────────────────────────┘toDateTimeOrDefault
導入バージョン: v21.11.0
toDateTime と同様ですが、変換に失敗した場合はデフォルト値を返します。デフォルト値は、第3引数が指定されている場合はその値、指定されていない場合は DateTime の下限値です。
構文
toDateTimeOrDefault(expr[, timezone, default])引数
expr— 数値、または数値を表す文字列を返す式。Stringまたは(U)Int*またはFloat*timezone— 任意。タイムゾーン。Stringdefault— 任意。パースに失敗した場合に返すデフォルト値。DateTime
戻り値
成功した場合は DateTime 型の値を返します。失敗した場合は、default が渡されていればその値を返し、渡されていなければ 1970-01-01 00:00:00 を返します。DateTime
例
変換に成功した場合
SELECT toDateTimeOrDefault('2022-12-30 13:44:17')2022-12-30 13:44:17変換失敗
SELECT toDateTimeOrDefault('', 'UTC', CAST('2023-01-01', 'DateTime(\'UTC\')'))2023-01-01 00:00:00toDateTimeOrNull
導入バージョン: v1.1.0
入力値を DateTime 型の値に変換しますが、無効な引数が渡された場合は NULL を返します。
toDateTime と同様ですが、無効な引数が渡された場合は NULL を返します。
整数の引数は Unix timestamp として解釈され、DateTime 型の範囲外である場合は NULL を返します。
構文
toDateTimeOrNull(x[, timezone])引数
x— 日時の文字列表現、または Unixタイムスタンプの整数値。Stringまたは(U)Int8/16/32/64timezone— 省略可能。戻り値のタイムゾーン。String
戻り値
成功した場合は DateTime 型の値を返し、それ以外の場合は NULL を返します。DateTime または NULL
例
使用例
SELECT toDateTimeOrNull('2025-12-30 13:44:17'), toDateTimeOrNull('invalid')┌─toDateTimeOrNull('2025-12-30 13:44:17')─┬─toDateTimeOrNull('invalid')─┐
│ 2025-12-30 13:44:17 │ ᴺᵁᴸᴸ │
└─────────────────────────────────────────┴─────────────────────────────┘タイムゾーン付きの整数引数
SELECT toDateTimeOrNull(1583851242, 'Asia/Shanghai'), toDateTimeOrNull(4294967296)┌─toDateTimeOrNull(1583851242, 'Asia/Shanghai')─┬─toDateTimeOrNull(4294967296)─┐
│ 2020-03-10 22:40:42 │ ᴺᵁᴸᴸ │
└───────────────────────────────────────────────┴──────────────────────────────┘toDateTimeOrZero
導入バージョン: v1.1.0
入力値を DateTime 型の値に変換します。無効な引数を受け取った場合は、DateTime の下限値を返します。 toDateTime と同じですが、無効な引数を受け取った場合は DateTime の下限値を返します。
構文
toDateTimeOrZero(x)引数
x— 日時の文字列表現。String
戻り値
成功した場合は DateTime 型の値を返し、失敗した場合は DateTime の下限値 (1970-01-01 00:00:00) を返します。DateTime
例
使用例
SELECT toDateTimeOrZero('2025-12-30 13:44:17'), toDateTimeOrZero('invalid')┌─toDateTimeOrZero('2025-12-30 13:44:17')─┬─toDateTimeOrZero('invalid')─┐
│ 2025-12-30 13:44:17 │ 1970-01-01 00:00:00 │
└─────────────────────────────────────────┴─────────────────────────────┘toDecimal128
導入バージョン: v18.12.0
入力値を、スケール S の Decimal(38, S) 型の値に変換します。
エラー時には例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数:
- Float* 型の値
NaNおよびInfの文字列表現 (大文字と小文字を区別しません) 。 - 2進数および16進数の文字列表現。例:
SELECT toDecimal128('0xc0fe', 1);。
構文
toDecimal128(expr, S)引数
expr— 数値、または数値の文字列表現を返す式。ExpressionS— 0 から 38 までのスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8
戻り値
型 Decimal(38, S) の値を返します。Decimal128(S)
例
使用例
SELECT
toDecimal128(99, 1) AS a, toTypeName(a) AS type_a,
toDecimal128(99.67, 2) AS b, toTypeName(b) AS type_b,
toDecimal128('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT VerticalRow 1:
──────
a: 99
type_a: Decimal(38, 1)
b: 99.67
type_b: Decimal(38, 2)
c: 99.67
type_c: Decimal(38, 3)toDecimal128OrDefault
導入バージョン: v21.11.0
toDecimal128 と同様に、この関数は入力値を Decimal(38, S) 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
構文
toDecimal128OrDefault(expr, S[, default])引数
expr— 数値の文字列表現です。StringS— 0 から 38 までのスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8default— 任意。Decimal128(S) 型へのパースに失敗した場合に返されるデフォルト値です。Decimal128(S)
戻り値
成功した場合は Decimal(38, S) 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Decimal128(S)
例
変換に成功した場合
SELECT toDecimal128OrDefault(toString(1/42), 18)0.023809523809523808変換失敗
SELECT toDecimal128OrDefault('Inf', 0, CAST('-1', 'Decimal128(0)'))-1toDecimal128OrNull
導入バージョン: v20.1.0
入力値を Decimal(38, S) 型の値に変換します。エラーが発生した場合は NULL を返します。
toDecimal128 と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数 (NULL を返します) :
- Float* 型の値
NaNおよびInf、またはその文字列表現 (大文字と小文字を区別しません) 。 - バイナリ値および16進数値の文字列表現。
Decimal128の範囲(-1*10^(38 - S), 1*10^(38 - S))を超える値。
関連項目:
構文
toDecimal128OrNull(expr, S)引数
expr— 数値、または数値の文字列表現を返す式。ExpressionS— 0~38 のスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8
戻り値
成功した場合は Decimal(38, S) 型の値を返し、そうでない場合は NULL を返します。Decimal128(S) または NULL
例
使用例
SELECT toDecimal128OrNull('42.7', 2), toDecimal128OrNull('invalid', 2)┌─toDecimal128OrNull('42.7', 2)─┬─toDecimal128OrNull('invalid', 2)─┐
│ 42.7 │ ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘toDecimal128OrZero
導入バージョン: v20.1.0
入力値を Decimal(38, S) 型の値に変換します。エラーが発生した場合は 0 を返します。
toDecimal128 と同様ですが、変換エラー時には例外をスローせず、0 を返します。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数 (0 を返します):
- Float* 型の値
NaNおよびInf、またはその文字列表現 (大文字と小文字を区別しません) 。 - 2進数および16進数の文字列表現。
構文
toDecimal128OrZero(expr, S)引数
expr— 数値、または数値の文字列表現を返す式。ExpressionS— 0 から 38 までのスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8
戻り値
成功した場合は Decimal(38, S) の値を返し、失敗した場合は 0 を返します。Decimal128(S)
例
基本的な使い方
SELECT toDecimal128OrZero('42.7', 2), toDecimal128OrZero('invalid', 2)┌─toDecimal128OrZero('42.7', 2)─┬─toDecimal128OrZero('invalid', 2)─┐
│ 42.7 │ 0 │
└───────────────────────────────┴──────────────────────────────────┘toDecimal256
導入バージョン: v20.8.0
入力値を、スケール S を持つ Decimal(76, S) 型の値に変換します。エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数:
- Float* 値
NaNおよびInf、またはその文字列表現 (大文字と小文字は区別されません)。 - 2進数および16進数の文字列表現。例:
SELECT toDecimal256('0xc0fe', 1);。
構文
toDecimal256(expr, S)引数
expr— 数値、または数値を表す文字列を返す式。ExpressionS— 0 から 76 までのスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8
戻り値
Decimal(76, S) 型の値を返します。Decimal256(S)
例
使用例
SELECT
toDecimal256(99, 1) AS a, toTypeName(a) AS type_a,
toDecimal256(99.67, 2) AS b, toTypeName(b) AS type_b,
toDecimal256('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT VerticalRow 1:
──────
a: 99
type_a: Decimal(76, 1)
b: 99.67
type_b: Decimal(76, 2)
c: 99.67
type_c: Decimal(76, 3)toDecimal256OrDefault
導入バージョン: v21.11.0
toDecimal256 と同様に、この関数は入力値を Decimal(76, S) 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
構文
toDecimal256OrDefault(expr, S[, default])引数
expr— 数値の文字列表現です。StringS— 0〜76 のスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8default— 任意。Decimal256(S) 型へのパースに失敗した場合に返すデフォルト値です。Decimal256(S)
戻り値
成功した場合は Decimal(76, S) 型の値を返し、それ以外の場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Decimal256(S)
例
変換成功
SELECT toDecimal256OrDefault(toString(1/42), 76)0.023809523809523808変換に失敗
SELECT toDecimal256OrDefault('Inf', 0, CAST('-1', 'Decimal256(0)'))-1toDecimal256OrNull
導入バージョン: v20.8.0
入力値を Decimal(76, S) 型の値に変換します。エラーが発生した場合は NULL を返します。
toDecimal256 と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数 (NULL を返します) :
- Float* 型の値
NaNおよびInf、またはその文字列表現 (大文字と小文字を区別しません) 。 - バイナリ値および16進値の文字列表現。
Decimal256の範囲を超える値:(-1 * 10^(76 - S), 1 * 10^(76 - S))。
関連項目:
構文
toDecimal256OrNull(expr, S)引数
expr— 数値、または数値の文字列表現を返す式。ExpressionS— 0 から 76 までのスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8
戻り値
成功した場合は Decimal(76, S) の値を返し、それ以外の場合は NULL を返します。Decimal256(S) または NULL
例
使用例
SELECT toDecimal256OrNull('42.7', 2), toDecimal256OrNull('invalid', 2)┌─toDecimal256OrNull('42.7', 2)─┬─toDecimal256OrNull('invalid', 2)─┐
│ 42.7 │ ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘toDecimal256OrZero
導入バージョン: v20.8.0
入力値を Decimal(76, S) 型の値に変換します。エラーが発生した場合は 0 を返します。
toDecimal256 と同様ですが、変換エラー時に例外をスローする代わりに 0 を返します。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数 (0 を返します):
- Float* 型の値
NaNおよびInf、またはその文字列表現 (大文字と小文字を区別しません)。 - 2進数および16進数の文字列表現。
関連項目:
構文
toDecimal256OrZero(expr, S)引数
expr— 数値、または数値の文字列表現を返す式。ExpressionS— 0 から 76 までのスケールパラメータで、数値の小数部に含められる桁数を指定します。UInt8
戻り値
成功した場合は Decimal(76, S) の値を返し、失敗した場合は 0 を返します。Decimal256(S)
例
使用例
SELECT toDecimal256OrZero('42.7', 2), toDecimal256OrZero('invalid', 2)┌─toDecimal256OrZero('42.7', 2)─┬─toDecimal256OrZero('invalid', 2)─┐
│ 42.7 │ 0 │
└───────────────────────────────┴──────────────────────────────────┘toDecimal32
導入バージョン: v18.12.0
入力値を、スケール S の Decimal(9, S) 型の値に変換します。エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数:
- Float* 型の値
NaNおよびInf、またはそれらの文字列表現 (大文字と小文字は区別されません) 。 - 2進数および16進数の文字列表現。例:
SELECT toDecimal32('0xc0fe', 1);。
構文
toDecimal32(expr, S)引数
expr— 数値、または数値の文字列表現を返す式。ExpressionS— 0〜9 のスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8
戻り値
Decimal(9, S) 型の値を返します。Decimal32(S)
例
使用例
SELECT
toDecimal32(2, 1) AS a, toTypeName(a) AS type_a,
toDecimal32(4.2, 2) AS b, toTypeName(b) AS type_b,
toDecimal32('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT VerticalRow 1:
──────
a: 2
type_a: Decimal(9, 1)
b: 4.2
type_b: Decimal(9, 2)
c: 4.2
type_c: Decimal(9, 3)toDecimal32OrDefault
導入バージョン: v21.11.0
toDecimal32 と同様に、この関数は入力値を Decimal(9, S) 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
構文
toDecimal32OrDefault(expr, S[, default])引数
expr— 数値の文字列表現。StringS— 0 から 9 までのスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8default— 任意。Decimal32(S) 型へのパースに失敗した場合に返されるデフォルト値。Decimal32(S)
戻り値
成功した場合は Decimal(9, S) 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Decimal32(S)
例
変換成功
SELECT toDecimal32OrDefault(toString(0.0001), 5)0.0001変換に失敗
SELECT toDecimal32OrDefault('Inf', 0, CAST('-1', 'Decimal32(0)'))-1toDecimal32OrNull
導入バージョン: v20.1.0
入力値を Decimal(9, S) 型の値に変換しますが、エラーが発生した場合は NULL を返します。
toDecimal32 と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。
サポートされる引数:
- 型 (U)Int* の値、またはその文字列表現。
- 型 Float* の値、またはその文字列表現。
サポートされない引数 (NULL を返します):
- Float* 型の値
NaNおよびInf、またはそれらの文字列表現 (大文字と小文字を区別しません) 。 - 2進数および16進数の文字列表現。
Decimal32の範囲(-1*10^(9 - S), 1*10^(9 - S))を超える値。
関連項目:
構文
toDecimal32OrNull(expr, S)引数
expr— 数値、または数値を表す文字列を返す式。ExpressionS— 0 から 9 までのスケールパラメータで、数値の小数部の桁数を指定します。UInt8
戻り値
成功した場合は Decimal(9, S) の値を返し、それ以外の場合は NULL を返します。 Decimal32(S) または NULL
例
使用例
SELECT toDecimal32OrNull('42.7', 2), toDecimal32OrNull('invalid', 2)┌─toDecimal32OrNull('42.7', 2)─┬─toDecimal32OrNull('invalid', 2)─┐
│ 42.7 │ ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘toDecimal32OrZero
導入バージョン: v20.1.0
入力値を Decimal(9, S) 型の値に変換します。エラーが発生した場合は 0 を返します。
toDecimal32 と同様ですが、変換エラー時に例外を送出する代わりに 0 を返します。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数 (0 を返します) :
- Float* 型の値
NaNおよびInf、またはそれらの文字列表現 (大文字と小文字を区別しません) 。 - 2進数および16進数の文字列表現。
構文
toDecimal32OrZero(expr, S)引数
expr— 数値、または数値の文字列表現を返す式。ExpressionS— 0 から 9 までのスケールパラメータで、数値の小数部の桁数を指定します。UInt8
戻り値
成功した場合は Decimal(9, S) 値を返し、失敗した場合は 0 を返します。Decimal32(S)
例
使用例
SELECT toDecimal32OrZero('42.7', 2), toDecimal32OrZero('invalid', 2)┌─toDecimal32OrZero('42.7', 2)─┬─toDecimal32OrZero('invalid', 2)─┐
│ 42.7 │ 0 │
└──────────────────────────────┴─────────────────────────────────┘toDecimal64
導入バージョン: v18.12.0
入力値を、スケール S を持つ Decimal(18, S) 型の値に変換します。
エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数:
- Float* 型の値
NaNおよびInf、またはそれらの文字列表現 (大文字と小文字は区別されません) 。 - 2進数および16進数の文字列表現。例:
SELECT toDecimal64('0xc0fe', 1);。
構文
toDecimal64(expr, S)引数
expr— 数値、または数値の文字列表現を返す式。ExpressionS— 0〜18 のスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8
戻り値
Decimal 値を返します。Decimal(18, S)
例
使用例
SELECT
toDecimal64(2, 1) AS a, toTypeName(a) AS type_a,
toDecimal64(4.2, 2) AS b, toTypeName(b) AS type_b,
toDecimal64('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT VerticalRow 1:
──────
a: 2
type_a: Decimal(18, 1)
b: 4.2
type_b: Decimal(18, 2)
c: 4.2
type_c: Decimal(18, 3)toDecimal64OrDefault
導入バージョン: v21.11.0
この関数は toDecimal64 と同様に、入力値を Decimal(18, S) 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
構文
toDecimal64OrDefault(expr, S[, default])引数
expr— 数値の文字列表現です。StringS— 0 から 18 までのスケールパラメータで、数値の小数部に指定できる桁数を表します。UInt8default— 任意。Decimal64(S) 型へのパースに失敗した場合に返すデフォルト値です。Decimal64(S)
戻り値
成功した場合は Decimal(18, S) 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Decimal64(S)
例
変換に成功した場合
SELECT toDecimal64OrDefault(toString(0.0001), 18)0.0001変換の失敗
SELECT toDecimal64OrDefault('Inf', 0, CAST('-1', 'Decimal64(0)'))-1toDecimal64OrNull
導入バージョン: v20.1.0
入力値を Decimal(18, S) 型の値に変換しますが、エラーが発生した場合は NULL を返します。
toDecimal64 と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数 (NULL を返します) :
- Float* 型の値
NaNおよびInf、またはそれらの文字列表現 (大文字と小文字を区別しません) 。 - 2進数および16進数の値の文字列表現。
Decimal64の範囲(-1*10^(18 - S), 1*10^(18 - S))を超える値。
関連項目:
構文
toDecimal64OrNull(expr, S)引数
expr— 数値、または数値を文字列で表したものを返す式。ExpressionS— 0 から 18 までのスケールパラメータで、数値の小数部の桁数を指定します。UInt8
戻り値
成功した場合は Decimal(18, S) の値を返し、失敗した場合は NULL を返します。Decimal64(S) または NULL
例
使用例
SELECT toDecimal64OrNull('42.7', 2), toDecimal64OrNull('invalid', 2)┌─toDecimal64OrNull('42.7', 2)─┬─toDecimal64OrNull('invalid', 2)─┐
│ 42.7 │ ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘toDecimal64OrZero
導入バージョン: v20.1.0
入力値を Decimal(18, S) 型の値に変換します。エラーが発生した場合は 0 を返します。
toDecimal64 と同様ですが、変換エラー時に例外をスローする代わりに 0 を返します。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値、またはその文字列表現。
サポートされない引数 (0 を返します):
- Float* 型の値
NaNおよびInf、またはそれらの文字列表現 (大文字と小文字は区別されません) 。 - 2進数および16進数の文字列表現。
関連項目:
構文
toDecimal64OrZero(expr, S)引数
expr— 数値、または数値を文字列で表したものを返す式。ExpressionS— 0 から 18 までのスケールパラメータで、数値の小数部の桁数を指定します。UInt8
戻り値
成功した場合は Decimal(18, S) の値を返し、それ以外の場合は 0 を返します。Decimal64(S)
例
使用例
SELECT toDecimal64OrZero('42.7', 2), toDecimal64OrZero('invalid', 2)┌─toDecimal64OrZero('42.7', 2)─┬─toDecimal64OrZero('invalid', 2)─┐
│ 42.7 │ 0 │
└──────────────────────────────┴─────────────────────────────────┘toDecimalString
導入バージョン: v23.3.0
数値を、指定した小数点以下の桁数を持つ String に変換します。
この関数は、入力値を指定した小数点以下の桁数に丸めます。入力値の小数点以下の桁数が指定された桁数より少ない 場合は、指定どおりの小数点以下の桁数になるよう、結果の末尾が 0 で埋められます。
構文
toDecimalString(number, scale)引数
number— 文字列に変換する数値です。任意の数値型 (Int、UInt、Float、Decimal) を指定できます。Int8またはInt16またはInt32またはInt64またはUInt8またはUInt16またはUInt32またはUInt64またはFloat32またはFloat64またはDecimalscale— 小数部に表示する桁数です。必要に応じて結果は丸められます。UInt8
戻り値
指定した小数点以下の桁数で、数値を文字列として返します。String
例
数値を丸めてフォーマットする
SELECT toDecimalString(2.1456, 2)┌─toDecimalString(2.1456, 2)─┐
│ 2.15 │
└────────────────────────────┘0で埋める
SELECT toDecimalString(5, 3)┌─toDecimalString(5, 3)─┐
│ 5.000 │
└───────────────────────┘さまざまな数値型
SELECT toDecimalString(CAST(123.456 AS Decimal(10,3)), 2) AS decimal_val,
toDecimalString(CAST(42.7 AS Float32), 4) AS float_val┌─decimal_val─┬─float_val─┐
│ 123.46 │ 42.7000 │
└─────────────┴───────────┘toFixedString
導入バージョン: v1.1.0
String 型の引数を FixedString(N) 型 (長さ N の固定長文字列) に変換します。
文字列のバイト数が N 未満の場合は、右側が null バイトで埋められます。 文字列のバイト数が N を超える場合は、例外が発生します。
構文
toFixedString(s, N)引数
s— 変換する文字列。StringN— 生成される FixedString の長さ。const UInt*
戻り値
長さ N の FixedString を返します。FixedString(N)
例
使用例
-- The padding is made of null bytes, so the result is shown with `hex`.
SELECT hex(toFixedString('foo', 8)) AS s;┌─s────────────────┐
│ 666F6F0000000000 │
└──────────────────┘toFloat32
導入バージョン: v1.1.0
入力値を Float32 型の値に変換します。 エラーが発生した場合は例外を送出します。
サポートされる引数:
- (U)Int* 型の値。
- (U)Int8/16/32/128/256 の文字列表現。
NaNおよびInfを含む Float* 型の値。NaNおよびInfを含む Float* の文字列表現 (大文字と小文字を区別しません) 。
サポートされない引数:
- 2進数および16進数の文字列表現。たとえば
SELECT toFloat32('0xc0fe');。
関連項目:
構文
toFloat32(expr)引数
expr— 数値、または数値を表す文字列を返す式。Expression
戻り値
32 ビット浮動小数点数の値を返します。Float32
例
使用例
SELECT
toFloat32(42.7),
toFloat32('42.7'),
toFloat32('NaN')
FORMAT VerticalRow 1:
──────
toFloat32(42.7): 42.7
toFloat32('42.7'): 42.7
toFloat32('NaN'): nantoFloat32OrDefault
導入バージョン: v21.11.0
toFloat32 と同様に、この関数は入力値を Float32 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が渡されていない場合、エラー時には 0 が返されます。
構文
toFloat32OrDefault(expr[, default])引数
expr— 数値、または数値の文字列表現を返す式。Stringまたは(U)Int*またはFloat*default— 省略可能。パースに失敗した場合に返されるデフォルト値。Float32
戻り値
成功した場合は Float32 型の値を返し、失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Float32
例
変換に成功した場合
SELECT toFloat32OrDefault('8', CAST('0', 'Float32'))8変換に失敗した場合
SELECT toFloat32OrDefault('abc', CAST('0', 'Float32'))0toFloat32OrNull
導入バージョン: v1.1.0
入力値を Float32 型の値に変換しますが、エラーが発生した場合は NULL を返します。
toFloat32 と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。
サポートされる引数:
- 型 (U)Int* の値。
- (U)Int8/16/32/128/256 の文字列表現。
NaNおよびInfを含む、型 Float* の値。NaNおよびInfを含む、Float* の文字列表現 (大文字と小文字を区別しません) 。
サポートされない引数 (NULL を返します):
- 2進数および16進数の文字列表現。例:
SELECT toFloat32OrNull('0xc0fe');。 - 無効な文字列フォーマット。
関連項目:
構文
toFloat32OrNull(x)引数
x— 数値を表す文字列。String
戻り値
成功した場合は 32 ビットの Float 値を返し、失敗した場合は NULL を返します。Float32 または NULL
例
使用例
SELECT
toFloat32OrNull('42.7'),
toFloat32OrNull('NaN'),
toFloat32OrNull('abc')
FORMAT VerticalRow 1:
──────
toFloat32OrNull('42.7'): 42.7
toFloat32OrNull('NaN'): nan
toFloat32OrNull('abc'): ᴺᵁᴸᴸtoFloat32OrZero
導入バージョン: v1.1.0
入力値を Float32 型の値に変換します。エラーが発生した場合は 0 を返します。
toFloat32 と似ていますが、変換エラー時に例外をスローする代わりに 0 を返します。
関連項目:
構文
toFloat32OrZero(x)引数
x— 数値の文字列表現。String
戻り値
成功した場合は 32 ビットの浮動小数点値を返し、それ以外の場合は 0 を返します。 Float32
例
使用例
SELECT
toFloat32OrZero('42.7'),
toFloat32OrZero('abc')
FORMAT VerticalRow 1:
──────
toFloat32OrZero('42.7'): 42.7
toFloat32OrZero('abc'): 0toFloat64
導入バージョン: v1.1.0
入力値を Float64 型の値に変換します。
エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値。
- (U)Int8/16/32/128/256 の文字列表現。
NaNとInfを含む Float* 型の値。NaNとInfを含む Float* 型の文字列表現 (大文字と小文字は区別されません) 。
サポートされない引数:
- 2 進数および 16 進数の値の文字列表現。例:
SELECT toFloat64('0xc0fe');。
関連項目:
構文
toFloat64(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
64ビット浮動小数点値を返します。Float64
例
使用例
SELECT
toFloat64(42.7),
toFloat64('42.7'),
toFloat64('NaN')
FORMAT VerticalRow 1:
──────
toFloat64(42.7): 42.7
toFloat64('42.7'): 42.7
toFloat64('NaN'): nantoFloat64OrDefault
導入バージョン: v21.11.0
toFloat64 と同様に、この関数は入力値を Float64 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が渡されない場合、エラー時には 0 が返されます。
構文
toFloat64OrDefault(expr[, default])引数
戻り値
成功した場合は Float64 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Float64
例
変換に成功した例
SELECT toFloat64OrDefault('8', CAST('0', 'Float64'))8変換に失敗した場合
SELECT toFloat64OrDefault('abc', CAST('0', 'Float64'))0toFloat64OrNull
導入バージョン: v1.1.0
入力値を Float64 型の値に変換します。エラーが発生した場合は NULL を返します。
toFloat64 と同様ですが、変換エラー時に例外を送出する代わりに NULL を返します。
サポートされる引数:
- (U)Int* 型の値。
- (U)Int8/16/32/128/256 の文字列表現。
NaNおよびInfを含む Float* 型の値。NaNおよびInfを含む Float* 型の文字列表現 (大文字と小文字を区別しません) 。
サポートされない引数 (NULL を返します) :
- 2進数値および16進数値の文字列表現。例:
SELECT toFloat64OrNull('0xc0fe');。 - 無効な文字列形式。
関連項目:
構文
toFloat64OrNull(x)引数
x— 数値を表す文字列です。String
戻り値
成功した場合は 64 ビットの浮動小数点値を返し、失敗した場合は NULL を返します。Float64 または NULL
例
使用例
SELECT
toFloat64OrNull('42.7'),
toFloat64OrNull('NaN'),
toFloat64OrNull('abc')
FORMAT VerticalRow 1:
──────
toFloat64OrNull('42.7'): 42.7
toFloat64OrNull('NaN'): nan
toFloat64OrNull('abc'): ᴺᵁᴸᴸtoFloat64OrZero
導入バージョン: v1.1.0
入力値を Float64 型の値に変換します。エラーが発生した場合は 0 を返します。
toFloat64 と同様ですが、変換エラー時に例外をスローする代わりに 0 を返します。
関連項目:
構文
toFloat64OrZero(x)引数
x— 数値を表す文字列です。String
戻り値
成功した場合は 64 ビットの浮動小数点値を返し、失敗した場合は 0 を返します。Float64
例
使用例
SELECT
toFloat64OrZero('42.7'),
toFloat64OrZero('abc')
FORMAT VerticalRow 1:
──────
toFloat64OrZero('42.7'): 42.7
toFloat64OrZero('abc'): 0toInt128
導入バージョン: v1.1.0
入力値を Int128 型の値に変換します。 エラーが発生した場合は例外をスローします。 この関数ではゼロ方向への丸めが使用されるため、数値の小数点以下の桁数は切り捨てられます。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 型の値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toInt128('0xc0fe');。
関連項目:
構文
toInt128(expr)引数
expr— 数値、または数値を表す文字列を返す式。式
戻り値
128 ビット整数値を返します。Int128
例
使用例
SELECT
toInt128(-128),
toInt128(-128.8),
toInt128('-128')
FORMAT VerticalRow 1:
──────
toInt128(-128): -128
toInt128(-128.8): -128
toInt128('-128'): -128toInt128OrDefault
導入バージョン: v21.11.0
toInt128 と同様に、この関数は入力値を Int128 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が渡されない場合は、エラー時に 0 が返されます。
構文
toInt128OrDefault(expr[, default])引数
戻り値
成功した場合は Int128 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Int128
例
変換に成功した場合
SELECT toInt128OrDefault('-128', CAST('-1', 'Int128'))-128変換に失敗した場合
SELECT toInt128OrDefault('abc', CAST('-1', 'Int128'))-1toInt128OrNull
導入バージョン: v20.8.0
toInt128 と同様に、この関数は入力値を Int128 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します):
NaNおよびInfを含む、Float* 型の値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toInt128OrNull('0xc0fe');。
関連項目:
構文
toInt128OrNull(x)引数
x— 数値の文字列表現。String
戻り値
Int128 型の値を返します。変換に失敗した場合は NULL を返します。Int128 または NULL
例
使用例
SELECT
toInt128OrNull('-128'),
toInt128OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt128OrNull('-128'): -128
toInt128OrNull('abc'): ᴺᵁᴸᴸtoInt128OrZero
導入バージョン: v20.8.0
入力値を Int128 型に変換します。エラーが発生した場合は 0 を返します。
toInt128 と同様ですが、例外をスローする代わりに 0 を返します。
関連項目:
構文
toInt128OrZero(x)引数
戻り値
変換後の入力値を返します。変換に失敗した場合は 0 を返します。Int128
例
使用例
SELECT toInt128OrZero('123')123変換に失敗した場合は 0 を返します
SELECT toInt128OrZero('abc')0toInt16
導入バージョン: v1.1.0
入力値を Int16 型の値に変換します。
エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNやInfを含む、Float* 型の値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toInt16('0xc0fe');。
関連項目:
構文
toInt16(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
16ビット整数の値を返します。Int16
例
使用例
SELECT
toInt16(-16),
toInt16(-16.16),
toInt16('-16')
FORMAT VerticalRow 1:
──────
toInt16(-16): -16
toInt16(-16.16): -16
toInt16('-16'): -16toInt16OrDefault
導入バージョン: v21.11.0
toInt16 と同様に、この関数は入力値を Int16 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が渡されていない場合、エラー時には 0 が返されます。
構文
toInt16OrDefault(expr[, default])引数
戻り値
成功した場合は Int16 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Int16
例
変換に成功した場合
SELECT toInt16OrDefault('-16', CAST('-1', 'Int16'))-16変換に失敗しました
SELECT toInt16OrDefault('abc', CAST('-1', 'Int16'))-1toInt16OrNull
導入バージョン: v1.1.0
toInt16 と同様に、この関数は入力値を Int16 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します) :
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toInt16OrNull('0xc0fe');。
関連項目:
構文
toInt16OrNull(x)引数
x— 数値の文字列表現。String
戻り値
変換が成功した場合は Int16 型の値を返し、失敗した場合は NULL を返します。 Int16 または NULL
例
使用例
SELECT
toInt16OrNull('-16'),
toInt16OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt16OrNull('-16'): -16
toInt16OrNull('abc'): ᴺᵁᴸᴸtoInt16OrZero
導入バージョン: v1.1.0
この関数は toInt16 と同様に、入力値を Int16 型の値に変換しますが、エラーが発生した場合は 0 を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (0 を返す) :
NaNおよびInfを含む Float* 値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toInt16OrZero('0xc0fe');。
関連項目:
構文
toInt16OrZero(x)引数
x— 数値の文字列表現。String
戻り値
Int16 型の値を返します。変換に失敗した場合は 0 を返します。Int16
例
使用例
SELECT
toInt16OrZero('16'),
toInt16OrZero('abc')
FORMAT VerticalRow 1:
──────
toInt16OrZero('16'): 16
toInt16OrZero('abc'): 0toInt256
導入バージョン: v1.1.0
入力値を Int256 型の値に変換します。 エラーが発生した場合は例外をスローします。 この関数ではゼロ方向への丸めが使用されるため、数値の小数点以下の桁数は切り捨てられます。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 型の値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toInt256('0xc0fe');。
関連項目:
構文
toInt256(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
256 ビットの整数値を返します。Int256
例
使用例
SELECT
toInt256(-256),
toInt256(-256.256),
toInt256('-256')
FORMAT VerticalRow 1:
──────
toInt256(-256): -256
toInt256(-256.256): -256
toInt256('-256'): -256toInt256OrDefault
導入バージョン: v21.11.0
toInt256 と同様に、この関数は入力値を Int256 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が渡されない場合は、エラー時に 0 が返されます。
構文
toInt256OrDefault(expr[, default])引数
戻り値
成功した場合は Int256 型の値を返します。失敗した場合は、指定されていればデフォルト値を返し、指定されていなければ 0 を返します。Int256
例
変換に成功した場合
SELECT toInt256OrDefault('-256', CAST('-1', 'Int256'))-256変換に失敗
SELECT toInt256OrDefault('abc', CAST('-1', 'Int256'))-1toInt256OrNull
導入バージョン: v20.8.0
toInt256 と同様に、この関数は入力値を Int256 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します) :
NaNおよびInfを含む Float* 値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toInt256OrNull('0xc0fe');。
関連項目:
構文
toInt256OrNull(x)引数
x— 数値の文字列表現です。String
戻り値
Int256 型の値を返します。変換に失敗した場合は NULL を返します。 Int256 または NULL
例
使用例
SELECT
toInt256OrNull('-256'),
toInt256OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt256OrNull('-256'): -256
toInt256OrNull('abc'): ᴺᵁᴸᴸtoInt256OrZero
導入バージョン: v20.8.0
入力値を型 Int256 に変換しますが、エラーが発生した場合は 0 を返します。
toInt256 と同様ですが、例外をスローする代わりに 0 を返します。
関連項目:
構文
toInt256OrZero(x)引数
戻り値
変換後の入力値を返します。変換に失敗した場合は 0 を返します。Int256
例
使用例
SELECT toInt256OrZero('123')123変換に失敗するとゼロを返します
SELECT toInt256OrZero('abc')0toInt32
導入バージョン: v1.1.0
入力値を Int32 型の値に変換します。
エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 型の値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toInt32('0xc0fe');。
関連項目:
構文
toInt32(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
32 ビットの整数値を返します。Int32
例
使用例
SELECT
toInt32(-32),
toInt32(-32.32),
toInt32('-32')
FORMAT VerticalRow 1:
──────
toInt32(-32): -32
toInt32(-32.32): -32
toInt32('-32'): -32toInt32OrDefault
導入バージョン: v21.11.0
toInt32 と同様に、この関数は入力値を Int32 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が指定されていない場合、エラー時には 0 が返されます。
構文
toInt32OrDefault(expr[, default])Arguments
戻り値
成功した場合は Int32 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Int32
Examples
変換に成功した場合
SELECT toInt32OrDefault('-32', CAST('-1', 'Int32'))-32変換の失敗
SELECT toInt32OrDefault('abc', CAST('-1', 'Int32'))-1toInt32OrNull
導入バージョン: v1.1.0
toInt32 と同様に、この関数は入力値を Int32 型の値に変換しますが、エラー時には NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します) :
NaNおよびInfを含む Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toInt32OrNull('0xc0fe');。
関連項目:
構文
toInt32OrNull(x)引数
x— 数値の文字列表現。String
戻り値
Int32 型の値を返します。変換に失敗した場合は NULL を返します。Int32 または NULL
例
使用例
SELECT
toInt32OrNull('-32'),
toInt32OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt32OrNull('-32'): -32
toInt32OrNull('abc'): ᴺᵁᴸᴸtoInt32OrZero
導入バージョン: v1.1.0
toInt32 と同様に、この関数は入力値を Int32 型の値に変換しますが、エラーが発生した場合は 0 を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (0 を返します) :
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toInt32OrZero('0xc0fe');。
関連項目:
構文
toInt32OrZero(x)引数
x— 数値を表す文字列。String
戻り値
型 Int32 の値を返します。変換に失敗した場合は 0 を返します。Int32
例
使用例
SELECT
toInt32OrZero('32'),
toInt32OrZero('abc')
FORMAT VerticalRow 1:
──────
toInt32OrZero('32'): 32
toInt32OrZero('abc'): 0toInt64
導入バージョン: v1.1.0
入力値を Int64 型の値に変換します。
エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 型の値を表す文字列。- 2進数および16進数の文字列表現。例:
SELECT toInt64('0xc0fe');。
関連項目:
構文
toInt64(expr)引数
expr— 数値、または数値の文字列表現を返す式。サポート対象: 型 (U)Int* の値または文字列表現、型 Float* の値。非対応: NaN および Inf を含む Float* 値の文字列表現、2 進数および 16 進数の値の文字列表現。式
戻り値
64 ビット整数値を返します。Int64
例
使用例
SELECT
toInt64(-64),
toInt64(-64.64),
toInt64('-64')
FORMAT VerticalRow 1:
──────
toInt64(-64): -64
toInt64(-64.64): -64
toInt64('-64'): -64toInt64OrDefault
導入バージョン: v21.11.0
toInt64 と同様に、この関数は入力値を Int64 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が指定されていない場合、エラー時には 0 が返されます。
構文
toInt64OrDefault(expr[, default])引数
戻り値
成功した場合は Int64 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Int64
例
変換に成功した場合
SELECT toInt64OrDefault('-64', CAST('-1', 'Int64'))-64変換に失敗した場合
SELECT toInt64OrDefault('abc', CAST('-1', 'Int64'))-1toInt64OrNull
導入バージョン: v1.1.0
toInt64 と同様に、この関数は入力値を Int64 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します) :
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toInt64OrNull('0xc0fe');。
関連項目:
構文
toInt64OrNull(x)引数
x— 数値を表す文字列。String
戻り値
Int64 型の値を返します。変換に失敗した場合は NULL を返します。Int64 または NULL
例
使用例
SELECT
toInt64OrNull('-64'),
toInt64OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt64OrNull('-64'): -64
toInt64OrNull('abc'): ᴺᵁᴸᴸtoInt64OrZero
導入バージョン: v1.1.0
入力値を Int64 型に変換します。エラーが発生した場合は 0 を返します。
toInt64 と同様ですが、例外をスローする代わりに 0 を返します。
関連項目:
構文
toInt64OrZero(x)引数
戻り値
変換後の入力値を返します。変換に失敗した場合は 0 を返します。Int64
例
使用例
SELECT toInt64OrZero('123')123変換に失敗した場合、ゼロを返します
SELECT toInt64OrZero('abc')0toInt8
導入バージョン: v1.1.0
入力値を Int8 型の値に変換します。
エラー時には例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 型の値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toInt8('0xc0fe');。
関連項目:
構文
toInt8(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
8ビット整数値を返します。Int8
例
使用例
SELECT
toInt8(-8),
toInt8(-8.8),
toInt8('-8')
FORMAT VerticalRow 1:
──────
toInt8(-8): -8
toInt8(-8.8): -8
toInt8('-8'): -8toInt8OrDefault
導入バージョン: v21.11.0
toInt8 と同様に、この関数は入力値を Int8 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が指定されていない場合、エラー時には 0 が返されます。
構文
toInt8OrDefault(expr[, default])引数
戻り値
変換に成功した場合は Int8 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。Int8
例
変換に成功した場合
SELECT toInt8OrDefault('-8', CAST('-1', 'Int8'))-8変換に失敗した場合
SELECT toInt8OrDefault('abc', CAST('-1', 'Int8'))-1toInt8OrNull
導入バージョン: v1.1.0
toInt8 と同様に、この関数は入力値を Int8 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します) :
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toInt8OrNull('0xc0fe');。
関連項目:
構文
toInt8OrNull(x)引数
x— 数値の文字列表現。String
戻り値
Int8 型の値を返します。変換に失敗した場合は NULL を返します。Int8 または NULL
例
使用例
SELECT
toInt8OrNull('-8'),
toInt8OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt8OrNull('-8'): -8
toInt8OrNull('abc'): ᴺᵁᴸᴸtoInt8OrZero
導入バージョン: v1.1.0
toInt8 と同様に、この関数は入力値を Int8 型の値に変換しますが、エラーが発生した場合は 0 を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (0 を返します) :
NaNおよびInfを含む、Float* 値の文字列表現。- 2 進数および 16 進数の文字列表現。例:
SELECT toInt8OrZero('0xc0fe');。
関連項目:
構文
toInt8OrZero(x)引数
x— 数値の文字列表現です。String
戻り値
Int8 型の値を返します。変換に失敗した場合は 0 を返します。Int8
例
使用例
SELECT
toInt8OrZero('8'),
toInt8OrZero('abc')
FORMAT VerticalRow 1:
──────
toInt8OrZero('8'): 8
toInt8OrZero('abc'): 0toInterval
導入バージョン: v25.4.0
数値と単位を表す文字列から Interval 値を作成します。
この関数では、単位を文字列の引数として指定することで、1 つの関数から異なる型のインターバル (秒、分、時間、日、週、月、四半期、年) を統一的に作成できます。単位文字列では大文字と小文字は区別されません。
これは toIntervalSecond、toIntervalMinute、toIntervalDay などの型ごとの関数を呼び出すのと同等ですが、
単位を文字列パラメーターとして動的に指定できます。
構文
toInterval(value, unit)引数
value— 単位数を表す数値です。任意の数値型を指定できます。Int8orInt16orInt32orInt64orUInt8orUInt16orUInt32orUInt64orFloat32orFloat64unit— 時間の単位です。定数文字列である必要があります。有効な値は次のとおりです: 'nanosecond', 'microsecond', 'millisecond', 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'。String
戻り値
指定した型のInterval値を返します。結果の型は単位に応じて、IntervalNanosecond、IntervalMicrosecond、IntervalMillisecond、IntervalSecond、IntervalMinute、IntervalHour、IntervalDay、IntervalWeek、IntervalMonth、IntervalQuarter、またはIntervalYearになります。 Interval
例
異なる単位のインターバルを作成する
SELECT
toInterval(5, 'second') AS seconds,
toInterval(3, 'day') AS days,
toInterval(2, 'month') AS months┌─seconds─┬─days─┬─months─┐
│ 5 │ 3 │ 2 │
└─────────┴──────┴────────┘日付演算でインターバルを使用する
SELECT
now() AS current_time,
now() + toInterval(1, 'hour') AS one_hour_later,
now() - toInterval(7, 'day') AS week_ago┌─────────current_time─┬──one_hour_later─────┬────────────week_ago─┐
│ 2025-01-04 10:30:00 │ 2025-01-04 11:30:00 │ 2024-12-28 10:30:00 │
└──────────────────────┴─────────────────────┴─────────────────────┘動的な interval の生成
SELECT toDate('2025-01-01') + toInterval(number, 'day') AS dates
FROM numbers(5)┌──────dates─┐
│ 2025-01-01 │
│ 2025-01-02 │
│ 2025-01-03 │
│ 2025-01-04 │
│ 2025-01-05 │
└────────────┘toIntervalDay
導入バージョン: v1.1.0
データ型 IntervalDay の n 日間の インターバル を返します。
構文
toIntervalDay(n)引数
戻り値
n 日の Interval を返します。Interval
例
使用例
WITH
toDate('2025-06-15') AS date,
toIntervalDay(5) AS interval_to_days
SELECT date + interval_to_days AS result┌─────result─┐
│ 2025-06-20 │
└────────────┘toIntervalHour
導入バージョン: v1.1.0
データ型 IntervalHour の、n 時間を表す インターバル を返します。
構文
toIntervalHour(n)引数
戻り値
n 時間の インターバル を返します。Interval
例
使用例
WITH
toDate('2025-06-15') AS date,
toIntervalHour(12) AS interval_to_hours
SELECT date + interval_to_hours AS result┌──────────────result─┐
│ 2025-06-15 12:00:00 │
└─────────────────────┘toIntervalMicrosecond
導入バージョン: v22.6.0
データ型 IntervalMicrosecond の、n マイクロ秒を表す インターバル を返します。
構文
toIntervalMicrosecond(n)引数
戻り値
n マイクロ秒を表す インターバル を返します。Interval
例
使用例
WITH
toDateTime('2025-06-15') AS date,
toIntervalMicrosecond(30) AS interval_to_microseconds
SELECT date + interval_to_microseconds AS result┌─────────────────────result─┐
│ 2025-06-15 00:00:00.000030 │
└────────────────────────────┘toIntervalMillisecond
導入バージョン: v22.6.0
データ型 IntervalMillisecond の n ミリ秒のインターバルを返します。
構文
toIntervalMillisecond(n)引数
戻り値
n ミリ秒の Interval を返します。Interval
例
使用例
WITH
toDateTime('2025-06-15') AS date,
toIntervalMillisecond(30) AS interval_to_milliseconds
SELECT date + interval_to_milliseconds AS result┌──────────────────result─┐
│ 2025-06-15 00:00:00.030 │
└─────────────────────────┘toIntervalMinute
導入バージョン: v1.1.0
n 分を表す、データ型 IntervalMinute の interval を返します。
構文
toIntervalMinute(n)引数
戻り値
n 分の interval を返します。インターバル
例
使用例
WITH
toDate('2025-06-15') AS date,
toIntervalMinute(12) AS interval_to_minutes
SELECT date + interval_to_minutes AS result┌──────────────result─┐
│ 2025-06-15 00:12:00 │
└─────────────────────┘toIntervalMonth
導入バージョン: v1.1.0
データ型 IntervalMonth の n か月のインターバルを返します。
構文
toIntervalMonth(n)引数
戻り値
n か月の Interval を返します。
例
使用例
WITH
toDate('2025-06-15') AS date,
toIntervalMonth(1) AS interval_to_month
SELECT date + interval_to_month AS result┌─────result─┐
│ 2025-07-15 │
└────────────┘toIntervalNanosecond
導入バージョン: v22.6.0
データ型 IntervalNanosecond の、n ナノ秒を表す interval を返します。
構文
toIntervalNanosecond(n)引数
戻り値
n ナノ秒の インターバル を返します。
例
使用例
WITH
toDateTime('2025-06-15') AS date,
toIntervalNanosecond(30) AS interval_to_nanoseconds
SELECT date + interval_to_nanoseconds AS result┌────────────────────────result─┐
│ 2025-06-15 00:00:00.000000030 │
└───────────────────────────────┘toIntervalQuarter
導入バージョン: v1.1.0
データ型 IntervalQuarter の n 四半期の interval 値を返します。
構文
toIntervalQuarter(n)引数
戻り値
n 四半期を表す interval を返します。インターバル
例
使用例
WITH
toDate('2025-06-15') AS date,
toIntervalQuarter(1) AS interval_to_quarter
SELECT date + interval_to_quarter AS result┌─────result─┐
│ 2025-09-15 │
└────────────┘toIntervalSecond
導入バージョン: v1.1.0
データ型IntervalSecondのn秒のインターバルを返します。
構文
toIntervalSecond(n)引数
戻り値
n 秒の Interval を返します。
例
使用例
WITH
toDate('2025-06-15') AS date,
toIntervalSecond(30) AS interval_to_seconds
SELECT date + interval_to_seconds AS result┌──────────────result─┐
│ 2025-06-15 00:00:30 │
└─────────────────────┘toIntervalWeek
導入バージョン: v1.1.0
データ型 IntervalWeek の n 週間のインターバルを返します。
構文
toIntervalWeek(n)引数
戻り値
n 週間の インターバル を返します。Interval
例
使用例
WITH
toDate('2025-06-15') AS date,
toIntervalWeek(1) AS interval_to_week
SELECT date + interval_to_week AS result┌─────result─┐
│ 2025-06-22 │
└────────────┘toIntervalYear
導入バージョン: v1.1.0
データ型IntervalYearの、n 年を表す interval 値を返します。
構文
toIntervalYear(n)引数
戻り値
n 年の期間を表す インターバル を返します。
例
使用例
WITH
toDate('2024-06-15') AS date,
toIntervalYear(1) AS interval_to_year
SELECT date + interval_to_year AS result┌─────result─┐
│ 2025-06-15 │
└────────────┘toLowCardinality
導入バージョン: v18.12.0
入力引数を、同じデータ型の LowCardinality 版に変換します。
構文
toLowCardinality(expr)引数
戻り値
入力値を LowCardinality データ型に変換した結果を返します。LowCardinality
例
使用例
SELECT toLowCardinality('1')┌─toLowCardinality('1')─┐
│ 1 │
└───────────────────────┘toString
導入バージョン: v1.1.0
値を文字列表現に変換します。 DateTime 引数の場合、この関数はタイムゾーン名を指定した 2 つ目の String 引数を取ることができます。
構文
toString(value[, timezone])引数
戻り値
入力値の文字列表現を返します。String
例
使用例
SELECT
now() AS ts,
time_zone,
toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast │ 2023-09-08 20:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘toStringCutToZero
導入バージョン: v1.1.0
String または FixedString 型の引数を受け取り、元の文字列を最初の null byte で切り詰めた String を返します。
null byte (\0) は文字列終端文字として扱われます。 この関数は、null byte が意味のある内容の終端を示す C 形式の文字列やバイナリデータの処理に役立ちます。
構文
toStringCutToZero(s)引数
s— 処理対象の String または FixedString。StringまたはFixedString
戻り値
最初のヌルバイトより前の文字を含む String を返します。String
例
使用例
SELECT
toStringCutToZero('hello'),
toStringCutToZero('hello\0world')┌─toStringCutToZero('hello')─┬─toStringCutToZero('hello\0world')─┐
│ hello │ hello │
└────────────────────────────┴───────────────────────────────────┘toTime
導入バージョン: v25.5.0
入力値を Time 型に変換します。
String、FixedString、DateTime、DateTime64、または深夜0時からの経過秒数を表す数値型からの変換をサポートします。
型の範囲外の数値 (-999:59:59 ~ 999:59:59、すなわち -3599999 ~ 3599999 秒) は範囲の境界値に飽和され、有限でない浮動小数点値 (NaN、inf、-inf) は変換できず、例外が発生します。
構文
toTime(x)引数
x— 変換対象の入力値。StringまたはFixedStringまたはDateTimeまたはDateTime64または(U)Int*またはBFloat16またはFloat*
戻り値
変換後の値を返します。Time
例
DateTime64からTimeへの変換
SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime64('2025-04-15 14:30:25.123', 3))14:30:25DateTimeからTimeへの変換
SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime('2025-04-15 14:30:25'))14:30:25整数 (エポックからの秒数) からTimeへの変換
SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime(52225, 'UTC'))14:30:25toTime64
導入バージョン: v25.6.0
入力値を Time64 型に変換します。
String、FixedString、DateTime64、または深夜からの経過秒数を表す数値型からの変換をサポートします。
時刻値に対して秒未満の精度を提供し、小数点以下の桁数は最大 scale 桁です。
構文
toTime64(x, scale)引数
x— 変換対象の入力値。StringまたはFixedStringまたはDateTime64または(U)Int*またはFloat*scale— 変換後のTime64の精度 (小数点以下の桁数、0–9) 。(U)Int*
戻り値
指定した scale で変換した値を返します。Time64
例
String から Time64 への変換
SET enable_time_time64_type = 1;
SELECT toTime64('14:30:25.123456', 6)14:30:25.123456DateTime64からTime64への変換
SET enable_time_time64_type = 1;
SELECT toTime64(toDateTime64('2025-04-15 14:30:25.123456', 6), 6)14:30:25.123456Float (午前0時からの秒数) から Time64 への変換
SET enable_time_time64_type = 1;
SELECT toTime64(52225.123456, 6)14:30:25.123456toTime64OrNull
導入バージョン: v25.6.0
入力値を Time64 型の値に変換します。エラーが発生した場合は NULL を返します。
toTime64 と同様ですが、変換エラー時には例外をスローせず、NULL を返します。
関連項目:
構文
toTime64OrNull(x)引数
x— 秒未満の精度を含む時刻の文字列表現。String
戻り値
成功した場合は Time64 値を返し、失敗した場合は NULL を返します。Time64 または NULL
例
使用例
SELECT toTime64OrNull('12:30:45.123'), toTime64OrNull('invalid')┌─toTime64OrNull('12:30:45.123')─┬─toTime64OrNull('invalid')─┐
│ 12:30:45.123 │ ᴺᵁᴸᴸ │
└────────────────────────────────┴───────────────────────────┘toTime64OrZero
導入バージョン: v25.6.0
入力値を Time64 型の値に変換しますが、エラーが発生した場合は 00:00:00.000 を返します。
toTime64 と同様ですが、変換エラー時には例外をスローせず、代わりに 00:00:00.000 を返します。
構文
toTime64OrZero(x)引数
x— 秒未満の精度を含む時刻の文字列表現。String
戻り値
成功した場合は Time64 値を返し、失敗した場合は 00:00:00.000 を返します。Time64
例
使用例
SELECT toTime64OrZero('12:30:45.123'), toTime64OrZero('invalid')┌─toTime64OrZero('12:30:45.123')─┬─toTime64OrZero('invalid')─┐
│ 12:30:45.123 │ 00:00:00.000 │
└────────────────────────────────┴───────────────────────────┘toTimeOrNull
導入バージョン: v25.5.0
入力値を Time 型の値に変換します。エラーが発生した場合は NULL を返します。
toTime と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。
関連項目:
構文
toTimeOrNull(x)引数
x— 時刻を表す文字列。String
戻り値
成功した場合は Time 型の値を返し、失敗した場合は NULL を返します。Time または NULL
例
使用例
SELECT toTimeOrNull('12:30:45'), toTimeOrNull('invalid')┌─toTimeOrNull('12:30:45')─┬─toTimeOrNull('invalid')─┐
│ 12:30:45 │ ᴺᵁᴸᴸ │
└──────────────────────────┴─────────────────────────┘toTimeOrZero
導入バージョン: v25.5.0
入力値を Time 型の値に変換します。エラーが発生した場合は 00:00:00 を返します。
toTime と同様ですが、変換エラー時に例外をスローする代わりに 00:00:00 を返します。
構文
toTimeOrZero(x)引数
x— 時刻を表す文字列。String
戻り値
成功した場合は Time 型の値を返し、それ以外の場合は 00:00:00 を返します。Time
例
使用例
SELECT toTimeOrZero('12:30:45'), toTimeOrZero('invalid')┌─toTimeOrZero('12:30:45')─┬─toTimeOrZero('invalid')─┐
│ 12:30:45 │ 00:00:00 │
└──────────────────────────┴─────────────────────────┘toUInt128
導入バージョン: v1.1.0
入力値を UInt128 型の値に変換します。
エラーが発生した場合は例外をスローします。
この関数ではゼロ方向への丸めが使用されるため、数値の小数点以下の桁は切り捨てられます。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 型の値の文字列表現。- 2 進数および 16 進数の値の文字列表現。例:
SELECT toUInt128('0xc0fe');。
関連項目:
構文
toUInt128(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
128ビットの符号なし整数値を返します。UInt128
例
使用例
SELECT
toUInt128(128),
toUInt128(128.8),
toUInt128('128')
FORMAT VerticalRow 1:
──────
toUInt128(128): 128
toUInt128(128.8): 128
toUInt128('128'): 128toUInt128OrDefault
導入バージョン: v21.11.0
toUInt128 と同様に、この関数は入力値を UInt128 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が指定されていない場合、エラー時には 0 が返されます。
構文
toUInt128OrDefault(expr[, default])Arguments
戻り値
成功した場合は UInt128 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。UInt128
Examples
変換に成功した場合
SELECT toUInt128OrDefault('128', CAST('0', 'UInt128'))128変換に失敗した場合
SELECT toUInt128OrDefault('abc', CAST('0', 'UInt128'))0toUInt128OrNull
導入バージョン: v21.6.0
toUInt128 と同様に、この関数は入力値を UInt128 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します) :
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt128OrNull('0xc0fe');。
関連項目:
構文
toUInt128OrNull(x)引数
x— 数値を表す文字列です。String
戻り値
UInt128 型の値を返します。変換に失敗した場合は NULL を返します。UInt128 または NULL
例
使用例
SELECT
toUInt128OrNull('128'),
toUInt128OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt128OrNull('128'): 128
toUInt128OrNull('abc'): ᴺᵁᴸᴸtoUInt128OrZero
導入バージョン: v1.1.0
toUInt128 と同様に、この関数は入力値を UInt128 型の値に変換しますが、エラー時には 0 を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (0 を返します):
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt128OrZero('0xc0fe');。
関連項目:
構文
toUInt128OrZero(x)引数
x— 数値の文字列表現。String
戻り値
UInt128 型の値を返します。変換に失敗した場合は 0 を返します。UInt128
例
使用例
SELECT
toUInt128OrZero('128'),
toUInt128OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt128OrZero('128'): 128
toUInt128OrZero('abc'): 0toUInt16
導入バージョン: v1.1.0
入力値をUInt16型の値に変換します。
エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNやInfを含む、Float* 型の値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt16('0xc0fe');。
関連項目:
構文
toUInt16(expr)引数
expr— 数値、またはその文字列表現を返す式。式
戻り値
16 ビットの符号なし整数値を返します。UInt16
例
使用例
SELECT
toUInt16(16),
toUInt16(16.16),
toUInt16('16')
FORMAT VerticalRow 1:
──────
toUInt16(16): 16
toUInt16(16.16): 16
toUInt16('16'): 16toUInt16OrDefault
導入バージョン: v21.11.0
toUInt16 と同様に、この関数は入力値を UInt16 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が渡されない場合は、エラー時に 0 が返されます。
構文
toUInt16OrDefault(expr[, default])引数
戻り値
成功した場合は UInt16 型の値を返します。失敗した場合は、default が指定されていればその値を、指定されていなければ 0 を返します。UInt16
例
変換が成功した場合
SELECT toUInt16OrDefault('16', CAST('0', 'UInt16'))16変換に失敗した場合
SELECT toUInt16OrDefault('abc', CAST('0', 'UInt16'))0toUInt16OrNull
導入バージョン: v1.1.0
toUInt16 と同様に、この関数は入力値を UInt16 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int8/16/32/128/256 の文字列表現。
サポートされない引数 (NULL を返します):
NaNおよびInfを含む Float* 値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toUInt16OrNull('0xc0fe');。
関連項目:
構文
toUInt16OrNull(x)引数
x— 数値の文字列表現。String
戻り値
UInt16 型の値を返します。変換に失敗した場合は NULL を返します。UInt16 または NULL
例
使用例
SELECT
toUInt16OrNull('16'),
toUInt16OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt16OrNull('16'): 16
toUInt16OrNull('abc'): ᴺᵁᴸᴸtoUInt16OrZero
導入バージョン: v1.1.0
toUInt16 と同様に、この関数は入力値を UInt16 型の値に変換しますが、エラーが発生した場合は 0 を返します。
サポートされる引数:
- (U)Int8/16/32/128/256 の文字列表現。
サポートされない引数 (0 を返します):
NaNおよびInfを含む Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt16OrZero('0xc0fe');。
関連項目:
構文
toUInt16OrZero(x)引数
x— 数値の文字列表現。String
戻り値
UInt16 型の値を返します。変換に失敗した場合は 0 を返します。UInt16
例
使用例
SELECT
toUInt16OrZero('16'),
toUInt16OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt16OrZero('16'): 16
toUInt16OrZero('abc'): 0toUInt256
導入バージョン: v1.1.0
入力値を UInt256 型の値に変換します。 エラー時には例外をスローします。 この関数ではゼロ方向への丸めを使用するため、数値の小数点以下の桁数は切り捨てられます。
サポートされる引数:
- (U)Int* 型の値またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数値および16進数値の文字列表現 (例:
SELECT toUInt256('0xc0fe');)。
関連項目:
構文
toUInt256(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
256 ビットの符号なし整数値を返します。UInt256
例
使用例
SELECT
toUInt256(256),
toUInt256(256.256),
toUInt256('256')
FORMAT VerticalRow 1:
──────
toUInt256(256): 256
toUInt256(256.256): 256
toUInt256('256'): 256toUInt256OrDefault
導入バージョン: v21.11.0
toUInt256 と同様に、この関数は入力値を UInt256 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が渡されていない場合、エラー時には 0 が返されます。
構文
toUInt256OrDefault(expr[, default])引数
戻り値
成功した場合は UInt256 型の値を返します。失敗した場合は、default が指定されていればその値を、指定されていなければ 0 を返します。UInt256
例
変換に成功した場合
SELECT toUInt256OrDefault('-256', CAST('0', 'UInt256'))0変換に失敗した場合
SELECT toUInt256OrDefault('abc', CAST('0', 'UInt256'))0toUInt256OrNull
導入バージョン: v20.8.0
toUInt256 と同様に、この関数は入力値を UInt256 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します):
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt256OrNull('0xc0fe');。
関連項目:
構文
toUInt256OrNull(x)引数
x— 数値の文字列表現。String
戻り値
UInt256 型の値を返します。変換に失敗した場合は NULL を返します。UInt256 または NULL
例
使用例
SELECT
toUInt256OrNull('256'),
toUInt256OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt256OrNull('256'): 256
toUInt256OrNull('abc'): ᴺᵁᴸᴸtoUInt256OrZero
導入バージョン: v20.8.0
toUInt256 と同様に、この関数は入力値を UInt256 型の値に変換しますが、エラーが発生した場合は 0 を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (0 を返します):
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt256OrZero('0xc0fe');。
関連項目:
構文
toUInt256OrZero(x)引数
x— 数値の文字列表現。String
戻り値
型が UInt256 の値を返します。変換に失敗した場合は 0 を返します。UInt256
例
使用例
SELECT
toUInt256OrZero('256'),
toUInt256OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt256OrZero('256'): 256
toUInt256OrZero('abc'): 0toUInt32
導入バージョン: v1.1.0
入力値を UInt32 型の値に変換します。
エラーが発生した場合は例外がスローされます。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 型の値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toUInt32('0xc0fe');
関連項目:
構文
toUInt32(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
32 ビットの符号なし整数値を返します。UInt32
例
使用例
SELECT
toUInt32(32),
toUInt32(32.32),
toUInt32('32')
FORMAT VerticalRow 1:
──────
toUInt32(32): 32
toUInt32(32.32): 32
toUInt32('32'): 32toUInt32OrDefault
導入バージョン: v21.11.0
toUInt32 と同様に、この関数は入力値を UInt32 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が指定されていない場合、エラー時には 0 が返されます。
構文
toUInt32OrDefault(expr[, default])引数
戻り値
成功した場合は UInt32 型の値を返します。失敗した場合は、default が渡されていればその値を、渡されていなければ 0 を返します。UInt32
例
変換に成功した場合
SELECT toUInt32OrDefault('32', CAST('0', 'UInt32'))32変換失敗
SELECT toUInt32OrDefault('abc', CAST('0', 'UInt32'))0toUInt32OrNull
導入バージョン: v1.1.0
toUInt32 と同様に、この関数は入力値を UInt32 型の値に変換しますが、エラー時には NULL を返します。
サポートされる引数:
- (U)Int8/16/32/128/256 の文字列表現。
サポートされない引数 (NULL を返します) :
NaNおよびInfを含む Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt32OrNull('0xc0fe');。
関連項目:
構文
toUInt32OrNull(x)引数
x— 数値の文字列表現です。String
戻り値
UInt32 型の値を返します。変換に失敗した場合は NULL を返します。UInt32 または NULL
例
使用例
SELECT
toUInt32OrNull('32'),
toUInt32OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt32OrNull('32'): 32
toUInt32OrNull('abc'): ᴺᵁᴸᴸtoUInt32OrZero
導入バージョン: v1.1.0
toUInt32 と同様に、この関数は入力値を UInt32 型の値に変換しますが、エラーが発生した場合は 0 を返します。
サポートされる引数:
- (U)Int8/16/32/128/256 の文字列表現。
サポートされない引数 (0 を返します):
NaNおよびInfを含む Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt32OrZero('0xc0fe');。
関連項目:
構文
toUInt32OrZero(x)引数
x— 数値の文字列表現。String
戻り値
UInt32 型の値を返します。変換に失敗した場合は 0 を返します。UInt32
例
使用例
SELECT
toUInt32OrZero('32'),
toUInt32OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt32OrZero('32'): 32
toUInt32OrZero('abc'): 0toUInt64
導入バージョン: v1.1.0
入力値を UInt64 型の値に変換します。
エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない型:
NaNとInfを含む、Float* 型の値の文字列表現。- 2進数値および16進数値の文字列表現 (例:
SELECT toUInt64('0xc0fe');) 。
関連項目:
構文
toUInt64(expr)引数
expr— 数値、または数値の文字列表現を返す式。式
戻り値
64 ビットの符号なし整数値を返します。UInt64
例
使用例
SELECT
toUInt64(64),
toUInt64(64.64),
toUInt64('64')
FORMAT VerticalRow 1:
──────
toUInt64(64): 64
toUInt64(64.64): 64
toUInt64('64'): 64toUInt64OrDefault
導入バージョン: v21.11.0
toUInt64 と同様に、この関数は入力値を UInt64 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default が渡されない場合、エラーが発生したときは 0 が返されます。
構文
toUInt64OrDefault(expr[, default])引数
戻り値
成功した場合は UInt64 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。UInt64
例
変換に成功した場合
SELECT toUInt64OrDefault('64', CAST('0', 'UInt64'))64変換に失敗
SELECT toUInt64OrDefault('abc', CAST('0', 'UInt64'))0toUInt64OrNull
導入バージョン: v1.1.0
toUInt64 と同様に、この関数は入力値を UInt64 型の値に変換しますが、エラー時には NULL を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (NULL を返します) :
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt64OrNull('0xc0fe');。
関連項目:
構文
toUInt64OrNull(x)引数
x— 数値の文字列表現。String
戻り値
UInt64 型の値を返します。変換に失敗した場合は NULL を返します。UInt64 または NULL
例
使用例
SELECT
toUInt64OrNull('64'),
toUInt64OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt64OrNull('64'): 64
toUInt64OrNull('abc'): ᴺᵁᴸᴸtoUInt64OrZero
導入バージョン: v1.1.0
toUInt64 と同様に、この関数は入力値を UInt64 型の値に変換しますが、エラーが発生した場合は 0 を返します。
サポートされる引数:
- (U)Int* の文字列表現。
サポートされない引数 (0 を返します):
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の値の文字列表現。例:
SELECT toUInt64OrZero('0xc0fe');。
関連項目:
構文
toUInt64OrZero(x)引数
x— 数値の文字列表現。String
戻り値
UInt64 型の値を返します。変換に失敗した場合は 0 を返します。UInt64
例
使用例
SELECT
toUInt64OrZero('64'),
toUInt64OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt64OrZero('64'): 64
toUInt64OrZero('abc'): 0toUInt8
導入バージョン: v1.1.0
入力値を UInt8 型の値に変換します。
エラーが発生した場合は例外をスローします。
サポートされる引数:
- (U)Int* 型の値、またはその文字列表現。
- Float* 型の値。
サポートされない引数:
NaNおよびInfを含む、Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt8('0xc0fe');。
関連項目:
構文
toUInt8(expr)引数
expr— 数値、または数値を表す文字列を返す式。式
戻り値
8 ビットの符号なし整数値を返します。UInt8
例
使用例
SELECT
toUInt8(8),
toUInt8(8.8),
toUInt8('8')
FORMAT VerticalRow 1:
──────
toUInt8(8): 8
toUInt8(8.8): 8
toUInt8('8'): 8toUInt8OrDefault
導入バージョン: v21.11.0
toUInt8 と同様に、この関数は入力値を UInt8 型の値に変換しますが、エラーが発生した場合はデフォルト値を返します。
default 値が渡されない場合、エラー発生時には 0 が返されます。
構文
toUInt8OrDefault(expr[, default])引数
戻り値
成功した場合は UInt8 型の値を返します。失敗した場合は、指定されていればデフォルト値を、指定されていなければ 0 を返します。UInt8
例
変換に成功した場合
SELECT toUInt8OrDefault('8', CAST('0', 'UInt8'))8変換に失敗した場合
SELECT toUInt8OrDefault('abc', CAST('0', 'UInt8'))0toUInt8OrNull
導入バージョン: v1.1.0
toUInt8 と同様に、この関数は入力値を UInt8 型の値に変換しますが、エラーが発生した場合は NULL を返します。
サポートされる引数:
- (U)Int8/16/32/128/256 の文字列表現。
サポートされない引数 (NULL を返します):
NaNおよびInfを含む、通常の Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt8OrNull('0xc0fe');。
関連項目:
構文
toUInt8OrNull(x)引数
x— 数値を表す文字列。String
戻り値
UInt8 型の値を返します。変換に失敗した場合は NULL を返します。UInt8 または NULL
例
使用例
SELECT
toUInt8OrNull('42'),
toUInt8OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt8OrNull('42'): 42
toUInt8OrNull('abc'): ᴺᵁᴸᴸtoUInt8OrZero
導入バージョン: v1.1.0
toUInt8 と同様に、この関数は入力値を UInt8 型の値に変換しますが、エラーが発生した場合は 0 を返します。
サポートされる引数:
- (U)Int8/16/32/128/256 の文字列表現。
サポートされない引数 (0 を返します):
NaNおよびInfを含む、通常の Float* 値の文字列表現。- 2進数および16進数の文字列表現。例:
SELECT toUInt8OrZero('0xc0fe');。
関連項目:
構文
toUInt8OrZero(x)引数
x— 数値の文字列表現。String
戻り値
UInt8 型の値を返します。変換に失敗した場合は 0 を返します。UInt8
例
使用例
SELECT
toUInt8OrZero('-8'),
toUInt8OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt8OrZero('-8'): 0
toUInt8OrZero('abc'): 0toUUID
導入バージョン: v1.1.0
String 型の値を UUID 値に変換します。
構文
toUUID(string)引数
string— UUID の文字列表現。StringまたはFixedString
戻り値
UUID の文字列表現から UUID を返します。UUID
例
使用例
SELECT toUUID('61f0c404-5cb3-11e7-907b-a6006ad3dba0') AS uuid┌─uuid─────────────────────────────────┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0 │
└──────────────────────────────────────┘toUUIDOrZero
導入バージョン: v20.12.0
入力値を UUID 型の値に変換しますが、エラーが発生した場合はゼロ UUID を返します。
toUUID と似ていますが、変換エラー時に例外をスローする代わりに、ゼロ UUID (00000000-0000-0000-0000-000000000000) を返します。
サポートされる引数:
- 標準形式 (8-4-4-4-12 桁の16進数) の UUID の文字列表現。
- ハイフンなし (32 桁の16進数) の UUID の文字列表現。
サポートされない引数 (ゼロ UUID を返します) :
- 無効な文字列形式。
- 文字列以外の型。
構文
toUUIDOrZero(x)引数
x— UUID の文字列表現。String
戻り値
成功した場合は UUID 値を返し、失敗した場合はゼロ UUID (00000000-0000-0000-0000-000000000000) を返します。UUID
例
使用例
SELECT
toUUIDOrZero('550e8400-e29b-41d4-a716-446655440000') AS valid_uuid,
toUUIDOrZero('invalid-uuid') AS invalid_uuid┌─valid_uuid───────────────────────────┬─invalid_uuid─────────────────────────┐
│ 550e8400-e29b-41d4-a716-446655440000 │ 00000000-0000-0000-0000-000000000000 │
└──────────────────────────────────────┴──────────────────────────────────────┘toUnixTimestamp64Micro
導入バージョン: v20.5.0
DateTime64 を、固定のマイクロ秒精度を持つ Int64 値に変換します。
入力値は、その精度に応じて適切にスケールアップまたはスケールダウンされます。
構文
toUnixTimestamp64Micro(value)引数
value— 任意の精度を持つ DateTime64 の値。DateTime64
戻り値
マイクロ秒単位の Unixタイムスタンプを返します。Int64
例
使用例
WITH toDateTime64('2025-02-13 23:31:31.011123', 6, 'UTC') AS dt64
SELECT toUnixTimestamp64Micro(dt64);┌─toUnixTimestamp64Micro(dt64)─┐
│ 1739489491011123 │
└──────────────────────────────┘toUnixTimestamp64Milli
導入バージョン: v20.5.0
DateTime64 を、固定のミリ秒精度を持つ Int64 値に変換します。
入力値は、その精度に応じて適切にスケールアップまたはスケールダウンされます。
構文
toUnixTimestamp64Milli(value)引数
value— 任意の精度を持つ DateTime64 値。DateTime64
戻り値
ミリ秒単位の Unix タイムスタンプを返します。Int64
例
使用例
WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Milli(dt64);┌─toUnixTimestamp64Milli(dt64)─┐
│ 1739489491011 │
└──────────────────────────────┘toUnixTimestamp64Nano
導入バージョン: v20.5.0
DateTime64 を、固定のナノ秒精度を持つ Int64 値に変換します。
入力値は、その精度に応じて適切にスケールアップまたはスケールダウンされます。
構文
toUnixTimestamp64Nano(value)引数
value— 任意の精度の DateTime64 値。DateTime64
戻り値
ナノ秒単位の Unix タイムスタンプを返します。Int64
例
使用例
WITH toDateTime64('2025-02-13 23:31:31.011123456', 9, 'UTC') AS dt64
SELECT toUnixTimestamp64Nano(dt64);┌─toUnixTimestamp64Nano(dt64)─┐
│ 1739489491011123456 │
└─────────────────────────────┘toUnixTimestamp64Second
導入バージョン: v24.12.0
DateTime64 を、秒単位の固定精度を持つ Int64 値に変換します。
入力値は、その精度に応じて適切にスケールアップまたはスケールダウンされます。
構文
toUnixTimestamp64Second(value)引数
value— 任意の精度を持つ DateTime64 型の値。DateTime64
戻り値
秒単位の Unixタイムスタンプを返します。Int64
例
使用例
WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Second(dt64);┌─toUnixTimestamp64Second(dt64)─┐
│ 1739489491 │
└───────────────────────────────┘