--- slug: /ja/sql-reference/functions/date-time-functions sidebar_position: 45 sidebar_label: 日付と時刻 --- # 日付と時刻を操作するための関数 このセクションのほとんどの関数は、オプションのタイムゾーン引数を受け入れます。例: `Europe/Amsterdam`。この場合、タイムゾーンは指定されたものであり、ローカル(デフォルト)のものではありません。 **例** ```sql SELECT toDateTime('2016-06-15 23:00:00') AS time, toDate(time) AS date_local, toDate(time, 'Asia/Yekaterinburg') AS date_yekat, toString(time, 'US/Samoa') AS time_samoa ``` ```text ┌────────────────time─┬─date_local─┬─date_yekat─┬─time_samoa──────────┐ │ 2016-06-15 23:00:00 │ 2016-06-15 │ 2016-06-16 │ 2016-06-15 09:00:00 │ └─────────────────────┴────────────┴────────────┴─────────────────────┘ ``` ## makeDate [Date](../data-types/date.md)を作成します。 - 年、月、日を引数として指定する場合、または - 年と年内の日を引数として指定する場合。 **構文** ```sql makeDate(year, month, day); makeDate(year, day_of_year); ``` エイリアス: - `MAKEDATE(year, month, day);` - `MAKEDATE(year, day_of_year);` **引数** - `year` — 年。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `month` — 月。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `day` — 日。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `day_of_year` — 年内の日。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 **返される値** - 引数から作成された日付。[Date](../data-types/date.md)。 **例** 年、月、日からDateを作成します: ```sql SELECT makeDate(2023, 2, 28) AS Date; ``` 結果: ```text ┌───────date─┐ │ 2023-02-28 │ └────────────┘ ``` 年と年内の日を引数としてDateを作成します: ```sql SELECT makeDate(2023, 42) AS Date; ``` 結果: ```text ┌───────date─┐ │ 2023-02-11 │ └────────────┘ ``` ## makeDate32 年、月、日(またはオプションとして年と日)から[Date32](../../sql-reference/data-types/date32.md)型の日付を作成します。 **構文** ```sql makeDate32(year, [month,] day) ``` **引数** - `year` — 年。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 - `month` — 月(オプション)。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 - `day` — 日。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 :::note `month`が省略された場合、`day`は`1`から`365`の値を取る必要があります。そうでなければ、`1`から`31`の値を取る必要があります。 ::: **返される値** - 引数から作成された日付。[Date32](../../sql-reference/data-types/date32.md)。 **例** 年、月、日から日付を作成します: クエリ: ```sql SELECT makeDate32(2024, 1, 1); ``` 結果: ```response 2024-01-01 ``` 年と年内の日からDateを作成します: クエリ: ```sql SELECT makeDate32(2024, 100); ``` 結果: ```response 2024-04-09 ``` ## makeDateTime 年、月、日、時、分、秒の引数から[DateTime](../data-types/datetime.md)を作成します。 **構文** ```sql makeDateTime(year, month, day, hour, minute, second[, timezone]) ``` **引数** - `year` — 年。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `month` — 月。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `day` — 日。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `hour` — 時。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `minute` — 分。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `second` — 秒。[Integer](../data-types/int-uint.md)、[Float](../data-types/float.md) または [Decimal](../data-types/decimal.md)。 - `timezone` — 返される値の[タイムゾーン](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。 **返される値** - 引数から作成された日付と時刻。[DateTime](../data-types/datetime.md)。 **例** ```sql SELECT makeDateTime(2023, 2, 28, 17, 12, 33) AS DateTime; ``` 結果: ```text ┌────────────DateTime─┐ │ 2023-02-28 17:12:33 │ └─────────────────────┘ ``` ## makeDateTime64 コンポーネントから[DateTime64](../../sql-reference/data-types/datetime64.md)のデータ型の値を作成します:年、月、日、時、分、秒。オプションで小数点以下の精度を持ちます。 **構文** ```sql makeDateTime64(year, month, day, hour, minute, second[, precision]) ``` **引数** - `year` — 年(0-9999)。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 - `month` — 月(1-12)。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 - `day` — 日(1-31)。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 - `hour` — 時(0-23)。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 - `minute` — 分(0-59)。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 - `second` — 秒(0-59)。[Integer](../../sql-reference/data-types/int-uint.md)、[Float](../../sql-reference/data-types/float.md) または [Decimal](../../sql-reference/data-types/decimal.md)。 - `precision` — 小数点以下のコンポーネントのオプションの精度(0-9)。[Integer](../../sql-reference/data-types/int-uint.md)。 **返される値** - 引数から作成された日付と時刻。[DateTime64](../../sql-reference/data-types/datetime64.md)。 **例** ```sql SELECT makeDateTime64(2023, 5, 15, 10, 30, 45, 779, 5); ``` ```response ┌─makeDateTime64(2023, 5, 15, 10, 30, 45, 779, 5)─┐ │ 2023-05-15 10:30:45.00779 │ └─────────────────────────────────────────────────┘ ``` ## timestamp 最初の引数'expr'を[DateTime64(6)](../data-types/datetime64.md)型に変換します。 2番目の引数'expr_time'が指定されている場合、変換された値に指定された時間を加えます。 **構文** ```sql timestamp(expr[, expr_time]) ``` エイリアス: `TIMESTAMP` **引数** - `expr` - 日付または日時。[String](../data-types/string.md)。 - `expr_time` - オプションのパラメータ。加える時間。[String](../data-types/string.md)。 **例** ```sql SELECT timestamp('2023-12-31') as ts; ``` 結果: ```text ┌─────────────────────────ts─┐ │ 2023-12-31 00:00:00.000000 │ └────────────────────────────┘ ``` ```sql SELECT timestamp('2023-12-31 12:00:00', '12:00:00.11') as ts; ``` 結果: ```text ┌─────────────────────────ts─┐ │ 2024-01-01 00:00:00.110000 │ └────────────────────────────┘ ``` **返される値** - [DateTime64](../data-types/datetime64.md)(6) ## timeZone 現在のセッションのタイムゾーン、すなわち設定の値[session_timezone](../../operations/settings/settings.md#session_timezone)を返します。 分散テーブルのコンテキストで関数が実行されると、各シャードに関連する値を持つ通常のカラムが生成されます。そうでなければ定数値が生成されます。 **構文** ```sql timeZone() ``` エイリアス: `timezone`. **返される値** - タイムゾーン。[String](../data-types/string.md)。 **例** ```sql SELECT timezone() ``` 結果: ```response ┌─timezone()─────┐ │ America/Denver │ └────────────────┘ ``` **参照** - [serverTimeZone](#servertimezone) ## serverTimeZone サーバのタイムゾーン、すなわち設定の値[timezone](../../operations/server-configuration-parameters/settings.md#timezone)を返します。 分散テーブルのコンテキストで関数が実行されると、各シャードに関連する値を持つ通常のカラムが生成されます。そうでなければ定数値が生成されます。 **構文** ```sql serverTimeZone() ``` エイリアス: `serverTimezone`. **返される値** - タイムゾーン。[String](../data-types/string.md)。 **例** ```sql SELECT serverTimeZone() ``` 結果: ```response ┌─serverTimeZone()─┐ │ UTC │ └──────────────────┘ ``` **参照** - [timeZone](#timezone) ## toTimeZone 日付または日時を指定されたタイムゾーンに変換します。データの内部値(Unix秒の数)は変更せず、値のタイムゾーン属性と値の文字列表現のみが変更されます。 **構文** ```sql toTimezone(value, timezone) ``` エイリアス: `toTimezone`. **引数** - `value` — 時刻または日付と時刻。[DateTime64](../data-types/datetime64.md)。 - `timezone` — 返される値のタイムゾーン。[String](../data-types/string.md)。この引数は定数です。`toTimezone`はカラムのタイムゾーンを変更するため(タイムゾーンは`DateTime*`型の属性です)。 **返される値** - 日付と時刻。[DateTime](../data-types/datetime.md)。 **例** ```sql SELECT toDateTime('2019-01-01 00:00:00', 'UTC') AS time_utc, toTypeName(time_utc) AS type_utc, toInt32(time_utc) AS int32utc, toTimeZone(time_utc, 'Asia/Yekaterinburg') AS time_yekat, toTypeName(time_yekat) AS type_yekat, toInt32(time_yekat) AS int32yekat, toTimeZone(time_utc, 'US/Samoa') AS time_samoa, toTypeName(time_samoa) AS type_samoa, toInt32(time_samoa) AS int32samoa FORMAT Vertical; ``` 結果: ```text Row 1: ────── time_utc: 2019-01-01 00:00:00 type_utc: DateTime('UTC') int32utc: 1546300800 time_yekat: 2019-01-01 05:00:00 type_yekat: DateTime('Asia/Yekaterinburg') int32yekat: 1546300800 time_samoa: 2018-12-31 13:00:00 type_samoa: DateTime('US/Samoa') int32samoa: 1546300800 ``` **参照** - [formatDateTime](#formatdatetime) - 非定数のタイムゾーンをサポートします。 - [toString](type-conversion-functions.md#tostring) - 非定数のタイムゾーンをサポートします。 ## timeZoneOf [DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)データ型のタイムゾーン名を返します。 **構文** ```sql timeZoneOf(value) ``` エイリアス: `timezoneOf`. **引数** - `value` — 日付と時刻。[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - タイムゾーン名。[String](../data-types/string.md)。 **例** ```sql SELECT timezoneOf(now()); ``` 結果: ```text ┌─timezoneOf(now())─┐ │ Etc/UTC │ └───────────────────┘ ``` ## timeZoneOffset [UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time)からの秒単位のタイムゾーンオフセットを返します。 関数は指定された日時における[夏時間](https://en.wikipedia.org/wiki/Daylight_saving_time)および過去のタイムゾーンの変化を考慮します。 オフセットを計算するために[IANAタイムゾーンデータベース](https://www.iana.org/time-zones)が使用されます。 **構文** ```sql timeZoneOffset(value) ``` エイリアス: `timezoneOffset`. **引数** - `value` — 日付と時刻。[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - UTCからの秒単位のオフセット。[Int32](../data-types/int-uint.md)。 **例** ```sql SELECT toDateTime('2021-04-21 10:20:30', 'America/New_York') AS Time, toTypeName(Time) AS Type, timeZoneOffset(Time) AS Offset_in_seconds, (Offset_in_seconds / 3600) AS Offset_in_hours; ``` 結果: ```text ┌────────────────Time─┬─Type─────────────────────────┬─Offset_in_seconds─┬─Offset_in_hours─┐ │ 2021-04-21 10:20:30 │ DateTime('America/New_York') │ -14400 │ -4 │ └─────────────────────┴──────────────────────────────┴───────────────────┴─────────────────┘ ``` ## toYear 日付または日時の年成分(西暦)を返します。 **構文** ```sql toYear(value) ``` エイリアス: `YEAR` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の年。[UInt16](../data-types/int-uint.md)。 **例** ```sql SELECT toYear(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toYear(toDateTime('2023-04-21 10:20:30'))─┐ │ 2023 │ └───────────────────────────────────────────┘ ``` ## toQuarter 日付または日時の四半期(1-4)を返します。 **構文** ```sql toQuarter(value) ``` エイリアス: `QUARTER` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の四半期(1、2、3または4)。[UInt8](../data-types/int-uint.md)。 **例** ```sql SELECT toQuarter(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toQuarter(toDateTime('2023-04-21 10:20:30'))─┐ │ 2 │ └──────────────────────────────────────────────┘ ``` ## toMonth 日付または日時の月成分(1-12)を返します。 **構文** ```sql toMonth(value) ``` エイリアス: `MONTH` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の月(1-12)。[UInt8](../data-types/int-uint.md)。 **例** ```sql SELECT toMonth(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toMonth(toDateTime('2023-04-21 10:20:30'))─┐ │ 4 │ └────────────────────────────────────────────┘ ``` ## toDayOfYear 日付または日時の年内の日の数(1-366)を返します。 **構文** ```sql toDayOfYear(value) ``` エイリアス: `DAYOFYEAR` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の年内の日(1-366)。[UInt16](../data-types/int-uint.md)。 **例** ```sql SELECT toDayOfYear(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toDayOfYear(toDateTime('2023-04-21 10:20:30'))─┐ │ 111 │ └────────────────────────────────────────────────┘ ``` ## toDayOfMonth 日付または日時の月内の日の数(1-31)を返します。 **構文** ```sql toDayOfMonth(value) ``` エイリアス: `DAYOFMONTH`, `DAY` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の月内の日(1-31)。[UInt8](../data-types/int-uint.md)。 **例** ```sql SELECT toDayOfMonth(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toDayOfMonth(toDateTime('2023-04-21 10:20:30'))─┐ │ 21 │ └─────────────────────────────────────────────────┘ ``` ## toDayOfWeek 日付または日時の週内の日の数を返します。 `toDayOfWeek()`の2引数形式により、週の始まりが月曜日か日曜日か、返される値が0から6の範囲か1から7の範囲かを指定できます。モード引数が省略された場合、デフォルトモードは0です。日付のタイムゾーンは、3番目の引数として指定できます。 | モード | 週の始まり | 範囲 | |------|-------------------|------------------------------------------------| | 0 | 月曜日 | 1-7: 月曜日 = 1, 火曜日 = 2, ..., 日曜日 = 7 | | 1 | 月曜日 | 0-6: 月曜日 = 0, 火曜日 = 1, ..., 日曜日 = 6 | | 2 | 日曜日 | 0-6: 日曜日 = 0, 月曜日 = 1, ..., 土曜日 = 6 | | 3 | 日曜日 | 1-7: 日曜日 = 1, 月曜日 = 2, ..., 土曜日 = 7 | **構文** ```sql toDayOfWeek(t[, mode[, timezone]]) ``` エイリアス: `DAYOFWEEK`. **引数** - `t` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 - `mode` - 週の最初の日を決定します。可能な値は0、1、2または3です。上記の表を参照してください。 - `timezone` - オプションのパラメータであり、他の変換関数と同様に機能します。 最初の引数は、[parseDateTime64BestEffort()](type-conversion-functions.md#parsedatetime64besteffort)によってサポートされる形式の[String](../data-types/string.md)としても指定できます。文字列引数のサポートは、特定のサードパーティツールが期待するMySQLとの互換性のために存在します。将来的に文字列引数のサポートが新しいMySQL互換設定に依存する可能性があり、文字列の解析は一般的に遅いため、使用しないことを推奨します。 **返される値** - 指定された日付/時刻の週の曜日(1-7)、選択したモードに応じて。 **例** 以下の日付は2023年4月21日で、金曜日でした: ```sql SELECT toDayOfWeek(toDateTime('2023-04-21')), toDayOfWeek(toDateTime('2023-04-21'), 1) ``` 結果: ```response ┌─toDayOfWeek(toDateTime('2023-04-21'))─┬─toDayOfWeek(toDateTime('2023-04-21'), 1)─┐ │ 5 │ 4 │ └───────────────────────────────────────┴──────────────────────────────────────────┘ ``` ## toHour 日付時刻の時間成分(0-24)を返します。 時計が進められる場合、1時間進むと2時に発生し、時計が戻される場合、1時間戻ると3時に発生することが前提とされます(これは常に正確になるわけではなく、タイムゾーンによって異なります)。 **構文** ```sql toHour(value) ``` エイリアス: `HOUR` **引数** - `value` - [DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の時間(0-23)。[UInt8](../data-types/int-uint.md)。 **例** ```sql SELECT toHour(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toHour(toDateTime('2023-04-21 10:20:30'))─┐ │ 10 │ └───────────────────────────────────────────┘ ``` ## toMinute 日時の分成分(0-59)を返します。 **構文** ```sql toMinute(value) ``` エイリアス: `MINUTE` **引数** - `value` - [DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の時間の分(0-59)。[UInt8](../data-types/int-uint.md)。 **例** ```sql SELECT toMinute(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toMinute(toDateTime('2023-04-21 10:20:30'))─┐ │ 20 │ └─────────────────────────────────────────────┘ ``` ## toSecond 日時の秒成分(0-59)を返します。うるう秒は考慮されません。 **構文** ```sql toSecond(value) ``` エイリアス: `SECOND` **引数** - `value` - [DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の分の秒(0-59)。[UInt8](../data-types/int-uint.md)。 **例** ```sql SELECT toSecond(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toSecond(toDateTime('2023-04-21 10:20:30'))─┐ │ 30 │ └─────────────────────────────────────────────┘ ``` ## toMillisecond 日時のミリ秒成分(0-999)を返します。 **構文** ```sql toMillisecond(value) ``` **引数** - `value` - [DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 エイリアス: `MILLISECOND` ```sql SELECT toMillisecond(toDateTime64('2023-04-21 10:20:30.456', 3)) ``` 結果: ```response ┌──toMillisecond(toDateTime64('2023-04-21 10:20:30.456', 3))─┐ │ 456 │ └────────────────────────────────────────────────────────────┘ ``` **返される値** - 指定された日付/時刻の分のミリ秒(0-999)。[UInt16](../data-types/int-uint.md)。 ## toUnixTimestamp 文字列、日付、または日時を[Unixタイムスタンプ](https://en.wikipedia.org/wiki/Unix_time)に変換し、`UInt32`表現で返します。 関数が文字列として呼び出されると、オプションのタイムゾーン引数を受け入れます。 **構文** ```sql toUnixTimestamp(date) toUnixTimestamp(str, [timezone]) ``` **返される値** - Unixタイムスタンプを返します。[UInt32](../data-types/int-uint.md)。 **例** ```sql SELECT '2017-11-05 08:07:47' AS dt_str, toUnixTimestamp(dt_str) AS from_str, toUnixTimestamp(dt_str, 'Asia/Tokyo') AS from_str_tokyo, toUnixTimestamp(toDateTime(dt_str)) AS from_datetime, toUnixTimestamp(toDateTime64(dt_str, 0)) AS from_datetime64, toUnixTimestamp(toDate(dt_str)) AS from_date, toUnixTimestamp(toDate32(dt_str)) AS from_date32 FORMAT Vertical; ``` 結果: ```text Row 1: ────── dt_str: 2017-11-05 08:07:47 from_str: 1509869267 from_str_tokyo: 1509836867 from_datetime: 1509869267 from_datetime64: 1509869267 from_date: 1509840000 from_date32: 1509840000 ``` :::note `toStartOf*`、`toLastDayOf*`、`toMonday`、`timeSlot`関数の返り値の型は、構成パラメータ[enable_extended_results_for_datetime_functions](../../operations/settings/settings.md#enable-extended-results-for-datetime-functions)によって決まります。このパラメータはデフォルトで`0`です。 動作は以下の通りです: * `enable_extended_results_for_datetime_functions = 0`の場合: * `toStartOfYear`、`toStartOfISOYear`、`toStartOfQuarter`、`toStartOfMonth`、`toStartOfWeek`、`toLastDayOfWeek`、`toLastDayOfMonth`、`toMonday`は、引数が`Date`または`DateTime`であれば`Date`または`DateTime`を返し、引数が`Date32`または`DateTime64`であれば`Date32`または`DateTime64`を返します。 * `toStartOfDay`、`toStartOfHour`、`toStartOfFifteenMinutes`、`toStartOfTenMinutes`、`toStartOfFiveMinutes`、`toStartOfMinute`、`timeSlot`は、引数が`Date`または`DateTime`であれば`DateTime`を返し、引数が`Date32`または`DateTime64`であれば`DateTime64`を返します。 ::: ## toStartOfYear 日付または日時を年の最初の日に切り捨てます。日付を`Date`オブジェクトとして返します。 **構文** ```sql toStartOfYear(value) ``` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 入力された日付/時刻の年の最初の日。[Date](../data-types/date.md)。 **例** ```sql SELECT toStartOfYear(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toStartOfYear(toDateTime('2023-04-21 10:20:30'))─┐ │ 2023-01-01 │ └──────────────────────────────────────────────────┘ ``` ## toStartOfISOYear 日付または日時をISO年の最初の日に切り捨てます。これは「通常」の年とは異なる場合があります。(参照: [https://en.wikipedia.org/wiki/ISO_week_date](https://en.wikipedia.org/wiki/ISO_week_date))。 **構文** ```sql toStartOfISOYear(value) ``` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 入力された日付/時刻の年の最初の日。[Date](../data-types/date.md)。 **例** ```sql SELECT toStartOfISOYear(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toStartOfISOYear(toDateTime('2023-04-21 10:20:30'))─┐ │ 2023-01-02 │ └─────────────────────────────────────────────────────┘ ``` ## toStartOfQuarter 日付または日時を四半期の最初の日に切り捨てます。四半期の最初の日は、1月1日、4月1日、7月1日、または10月1日です。 日付を返します。 **構文** ```sql toStartOfQuarter(value) ``` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の四半期の最初の日。[Date](../data-types/date.md)。 **例** ```sql SELECT toStartOfQuarter(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toStartOfQuarter(toDateTime('2023-04-21 10:20:30'))─┐ │ 2023-04-01 │ └─────────────────────────────────────────────────────┘ ``` ## toStartOfMonth 日付または日時を月の最初の日に切り捨てます。日付を返します。 **構文** ```sql toStartOfMonth(value) ``` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の月の最初の日。[Date](../data-types/date.md)。 **例** ```sql SELECT toStartOfMonth(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toStartOfMonth(toDateTime('2023-04-21 10:20:30'))─┐ │ 2023-04-01 │ └───────────────────────────────────────────────────┘ ``` :::note 不正な日付を解析する際の動作は実装に特有です。ClickHouseはゼロの日付を返すか、例外をスローするか、「自然」オーバーフローを行う可能性があります。 ::: ## toLastDayOfMonth 日付または日時を月の最終日に切り上げます。日付を返します。 **構文** ```sql toLastDayOfMonth(value) ``` エイリアス: `LAST_DAY` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の月の最終日。[Date](../data-types/date.md)。 **例** ```sql SELECT toLastDayOfMonth(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toLastDayOfMonth(toDateTime('2023-04-21 10:20:30'))─┐ │ 2023-04-30 │ └─────────────────────────────────────────────────────┘ ``` ## toMonday 日付または日時を最寄りの月曜日に切り捨てます。日付を返します。 **構文** ```sql toMonday(value) ``` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 **返される値** - 指定された日付/時刻の最寄りの日付(またはそれ以前)の月曜日。[Date](../data-types/date.md)。 **例** ```sql SELECT toMonday(toDateTime('2023-04-21 10:20:30')), /* 金曜日 */ toMonday(toDate('2023-04-24')), /* すでに月曜日 */ ``` 結果: ```response ┌─toMonday(toDateTime('2023-04-21 10:20:30'))─┬─toMonday(toDate('2023-04-24'))─┐ │ 2023-04-17 │ 2023-04-24 │ └─────────────────────────────────────────────┴────────────────────────────────┘ ``` ## toStartOfWeek 日付または日時を最寄りの日曜日または月曜日に切り捨てます。日付を返します。モード引数は`toWeek()`関数のモード引数と同じように機能します。モードが指定されていない場合、デフォルトは0になります。 **構文** ```sql toStartOfWeek(t[, mode[, timezone]]) ``` **引数** - `t` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md)または[DateTime64](../data-types/datetime64.md)。 - `mode` - 最初の日を決定します。`toWeek()`関数の説明を参照してください。 - `timezone` - オプションのパラメータであり、他の変換関数と同様に機能します。 **返される値** - 指定された日付に対する日曜日または月曜日の日付(またはそれ以前の日付)。[Date](../data-types/date.md)。 **例** ```sql SELECT toStartOfWeek(toDateTime('2023-04-21 10:20:30')), /* 金曜日 */ toStartOfWeek(toDateTime('2023-04-21 10:20:30'), 1), /* 金曜日 */ toStartOfWeek(toDate('2023-04-24')), /* 月曜日 */ toStartOfWeek(toDate('2023-04-24'), 1) /* 月曜日 */ FORMAT Vertical ``` 結果: ```response Row 1: ────── toStartOfWeek(toDateTime('2023-04-21 10:20:30')): 2023-04-16 toStartOfWeek(toDateTime('2023-04-21 10:20:30'), 1): 2023-04-17 toStartOfWeek(toDate('2023-04-24')): 2023-04-23 toStartOfWeek(toDate('2023-04-24'), 1): 2023-04-24 ``` ``` **引数** - `t` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) - `mode` - [toWeek](#toweek) 関数で説明されている通り、週の最後の日を決定します - `timezone` - オプションのパラメータで、他の変換関数と同様に動作します **返される値** - 指定された日付に基づく、最も近い日曜日または月曜日の日付。 [Date](../data-types/date.md)。 **例** ```sql SELECT toLastDayOfWeek(toDateTime('2023-04-21 10:20:30')), /* 金曜日 */ toLastDayOfWeek(toDateTime('2023-04-21 10:20:30'), 1), /* 金曜日 */ toLastDayOfWeek(toDate('2023-04-22')), /* 土曜日 */ toLastDayOfWeek(toDate('2023-04-22'), 1) /* 土曜日 */ FORMAT Vertical ``` 結果: ```response 行 1: ────── toLastDayOfWeek(toDateTime('2023-04-21 10:20:30')): 2023-04-22 toLastDayOfWeek(toDateTime('2023-04-21 10:20:30'), 1): 2023-04-23 toLastDayOfWeek(toDate('2023-04-22')): 2023-04-22 toLastDayOfWeek(toDate('2023-04-22'), 1): 2023-04-23 ``` ## toStartOfDay 時間を含む日付を、日付の開始時刻に切り下げます。 **構文** ```sql toStartOfDay(value) ``` **引数** - `value` - [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) **返される値** - 指定された日付/時間の開始時刻。 [DateTime](../data-types/datetime.md)。 **例** ```sql SELECT toStartOfDay(toDateTime('2023-04-21 10:20:30')) ``` 結果: ```response ┌─toStartOfDay(toDateTime('2023-04-21 10:20:30'))─┐ │ 2023-04-21 00:00:00 │ └─────────────────────────────────────────────────┘ ``` ## toStartOfHour 時間を含む日付を、時刻の開始に切り下げます。 **構文** ```sql toStartOfHour(value) ``` **引数** - `value` - [DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) **返される値** - 指定された日付/時間の開始時刻。 [DateTime](../data-types/datetime.md)。 **例** ```sql SELECT toStartOfHour(toDateTime('2023-04-21 10:20:30')), toStartOfHour(toDateTime64('2023-04-21', 6)) ``` 結果: ```response ┌─toStartOfHour(toDateTime('2023-04-21 10:20:30'))─┬─toStartOfHour(toDateTime64('2023-04-21', 6))─┐ │ 2023-04-21 10:00:00 │ 2023-04-21 00:00:00 │ └──────────────────────────────────────────────────┴──────────────────────────────────────────────┘ ``` ## toStartOfMinute 時間を含む日付を、分の開始に切り下げます。 **構文** ```sql toStartOfMinute(value) ``` **引数** - `value` - [DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) **返される値** - 指定された日付/時間の開始時刻。 [DateTime](../data-types/datetime.md)。 **例** ```sql SELECT toStartOfMinute(toDateTime('2023-04-21 10:20:30')), toStartOfMinute(toDateTime64('2023-04-21 10:20:30.5300', 8)) FORMAT Vertical ``` 結果: ```response 行 1: ────── toStartOfMinute(toDateTime('2023-04-21 10:20:30')): 2023-04-21 10:20:00 toStartOfMinute(toDateTime64('2023-04-21 10:20:30.5300', 8)): 2023-04-21 10:20:00 ``` ## toStartOfSecond サブ秒を切り捨てます。 **構文** ``` sql toStartOfSecond(value, [timezone]) ``` **引数** - `value` — 日付と時刻。[DateTime64](../data-types/datetime64.md)。 - `timezone` — 返される値の [Timezone](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。指定されていない場合、この関数は `value` パラメータのタイムゾーンを使用します。[String](../data-types/string.md)。 **返される値** - サブ秒を持たない入力値。[DateTime64](../data-types/datetime64.md)。 **例** タイムゾーンなしのクエリ: ``` sql WITH toDateTime64('2020-01-01 10:20:30.999', 3) AS dt64 SELECT toStartOfSecond(dt64); ``` 結果: ``` text ┌───toStartOfSecond(dt64)─┐ │ 2020-01-01 10:20:30.000 │ └─────────────────────────┘ ``` タイムゾーンありのクエリ: ``` sql WITH toDateTime64('2020-01-01 10:20:30.999', 3) AS dt64 SELECT toStartOfSecond(dt64, 'Asia/Istanbul'); ``` 結果: ``` text ┌─toStartOfSecond(dt64, 'Asia/Istanbul')─┐ │ 2020-01-01 13:20:30.000 │ └────────────────────────────────────────┘ ``` **参照** - [Timezone](../../operations/server-configuration-parameters/settings.md#timezone) サーバー構成パラメータ。 ## toStartOfMillisecond 時間を含む日付を、ミリ秒の開始に切り下げます。 **構文** ``` sql toStartOfMillisecond(value, [timezone]) ``` **引数** - `value` — 日付と時刻。[DateTime64](../../sql-reference/data-types/datetime64.md)。 - `timezone` — 返される値の [Timezone](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。指定されていない場合、この関数は `value` パラメータのタイムゾーンを使用します。[String](../../sql-reference/data-types/string.md)。 **返される値** - サブミリ秒を持つ入力値。[DateTime64](../../sql-reference/data-types/datetime64.md)。 **例** タイムゾーンなしのクエリ: ``` sql WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64 SELECT toStartOfMillisecond(dt64); ``` 結果: ``` text ┌────toStartOfMillisecond(dt64)─┐ │ 2020-01-01 10:20:30.999000000 │ └───────────────────────────────┘ ``` タイムゾーンありのクエリ: ``` sql WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64 SELECT toStartOfMillisecond(dt64, 'Asia/Istanbul'); ``` 結果: ``` text ┌─toStartOfMillisecond(dt64, 'Asia/Istanbul')─┐ │ 2020-01-01 12:20:30.999000000 │ └─────────────────────────────────────────────┘ ``` **参照** - [Timezone](../../operations/server-configuration-parameters/settings.md#timezone) サーバー構成パラメータ。 ## toStartOfMicrosecond 時間を含む日付を、マイクロ秒の開始に切り下げます。 **構文** ``` sql toStartOfMicrosecond(value, [timezone]) ``` **引数** - `value` — 日付と時刻。[DateTime64](../../sql-reference/data-types/datetime64.md)。 - `timezone` — 返される値の [Timezone](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。指定されていない場合、この関数は `value` パラメータのタイムゾーンを使用します。[String](../../sql-reference/data-types/string.md)。 **返される値** - サブマイクロ秒を持つ入力値。[DateTime64](../../sql-reference/data-types/datetime64.md)。 **例** タイムゾーンなしのクエリ: ``` sql WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64 SELECT toStartOfMicrosecond(dt64); ``` 結果: ``` text ┌────toStartOfMicrosecond(dt64)─┐ │ 2020-01-01 10:20:30.999999000 │ └───────────────────────────────┘ ``` タイムゾーンありのクエリ: ``` sql WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64 SELECT toStartOfMicrosecond(dt64, 'Asia/Istanbul'); ``` 結果: ``` text ┌─toStartOfMicrosecond(dt64, 'Asia/Istanbul')─┐ │ 2020-01-01 12:20:30.999999000 │ └─────────────────────────────────────────────┘ ``` **参照** - [Timezone](../../operations/server-configuration-parameters/settings.md#timezone) サーバー構成パラメータ。 ## toStartOfNanosecond 時間を含む日付を、ナノ秒の開始に切り下げます。 **構文** ``` sql toStartOfNanosecond(value, [timezone]) ``` **引数** - `value` — 日付と時刻。[DateTime64](../../sql-reference/data-types/datetime64.md)。 - `timezone` — 返される値の [Timezone](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。指定されていない場合、この関数は `value` パラメータのタイムゾーンを使用します。[String](../../sql-reference/data-types/string.md)。 **返される値** - ナノ秒を持つ入力値。[DateTime64](../../sql-reference/data-types/datetime64.md)。 **例** タイムゾーンなしのクエリ: ``` sql WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64 SELECT toStartOfNanosecond(dt64); ``` 結果: ``` text ┌─────toStartOfNanosecond(dt64)─┐ │ 2020-01-01 10:20:30.999999999 │ └───────────────────────────────┘ ``` タイムゾーンありのクエリ: ``` sql WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64 SELECT toStartOfNanosecond(dt64, 'Asia/Istanbul'); ``` 結果: ``` text ┌─toStartOfNanosecond(dt64, 'Asia/Istanbul')─┐ │ 2020-01-01 12:20:30.999999999 │ └────────────────────────────────────────────┘ ``` **参照** - [Timezone](../../operations/server-configuration-parameters/settings.md#timezone) サーバー構成パラメータ。 ## toStartOfFiveMinutes 時間を含む日付を、5分の開始に切り下げます。 **構文** ```sql toStartOfFiveMinutes(value) ``` **引数** - `value` - [DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) **返される値** - 指定された日付/時間の5分の開始時刻。 [DateTime](../data-types/datetime.md)。 **例** ```sql SELECT toStartOfFiveMinutes(toDateTime('2023-04-21 10:17:00')), toStartOfFiveMinutes(toDateTime('2023-04-21 10:20:00')), toStartOfFiveMinutes(toDateTime('2023-04-21 10:23:00')) FORMAT Vertical ``` 結果: ```response 行 1: ────── toStartOfFiveMinutes(toDateTime('2023-04-21 10:17:00')): 2023-04-21 10:15:00 toStartOfFiveMinutes(toDateTime('2023-04-21 10:20:00')): 2023-04-21 10:20:00 toStartOfFiveMinutes(toDateTime('2023-04-21 10:23:00')): 2023-04-21 10:20:00 ``` ## toStartOfTenMinutes 時間を含む日付を、10分の開始に切り下げます。 **構文** ```sql toStartOfTenMinutes(value) ``` **引数** - `value` - [DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) **返される値** - 指定された日付/時間の10分の開始時刻。 [DateTime](../data-types/datetime.md)。 **例** ```sql SELECT toStartOfTenMinutes(toDateTime('2023-04-21 10:17:00')), toStartOfTenMinutes(toDateTime('2023-04-21 10:20:00')), toStartOfTenMinutes(toDateTime('2023-04-21 10:23:00')) FORMAT Vertical ``` 結果: ```response 行 1: ────── toStartOfTenMinutes(toDateTime('2023-04-21 10:17:00')): 2023-04-21 10:10:00 toStartOfTenMinutes(toDateTime('2023-04-21 10:20:00')): 2023-04-21 10:20:00 toStartOfTenMinutes(toDateTime('2023-04-21 10:23:00')): 2023-04-21 10:20:00 ``` ## toStartOfFifteenMinutes 時間を含む日付を、15分の開始に切り下げます。 **構文** ```sql toStartOfFifteenMinutes(value) ``` **引数** - `value` - [DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) **返される値** - 指定された日付/時間の15分の開始時刻。 [DateTime](../data-types/datetime.md)。 **例** ```sql SELECT toStartOfFifteenMinutes(toDateTime('2023-04-21 10:17:00')), toStartOfFifteenMinutes(toDateTime('2023-04-21 10:20:00')), toStartOfFifteenMinutes(toDateTime('2023-04-21 10:23:00')) FORMAT Vertical ``` 結果: ```response 行 1: ────── toStartOfFifteenMinutes(toDateTime('2023-04-21 10:17:00')): 2023-04-21 10:15:00 toStartOfFifteenMinutes(toDateTime('2023-04-21 10:20:00')): 2023-04-21 10:15:00 toStartOfFifteenMinutes(toDateTime('2023-04-21 10:23:00')): 2023-04-21 10:15:00 ``` ## toStartOfInterval この関数は `toStartOf*()` 関数を一般化し、 `toStartOfInterval(date_or_date_with_time, INTERVAL x unit [, time_zone])` 構文を使用します。 例えば、 - `toStartOfInterval(t, INTERVAL 1 YEAR)` は `toStartOfYear(t)` と同じ結果を返します - `toStartOfInterval(t, INTERVAL 1 MONTH)` は `toStartOfMonth(t)` と同じ結果を返します - `toStartOfInterval(t, INTERVAL 1 DAY)` は `toStartOfDay(t)` と同じ結果を返します - `toStartOfInterval(t, INTERVAL 15 MINUTE)` は `toStartOfFifteenMinutes(t)` と同じ結果を返します 計算は特定の時点に対して行われます。 | インターバル | 開始 | |-------------|--------------------------| | YEAR | 年 0 | | QUARTER | 1900年第1四半期 | | MONTH | 1900年1月 | | WEEK | 1970年第1週(01-05) | | DAY | 1970-01-01 | | HOUR | (*) | | MINUTE | 1970-01-01 00:00:00 | | SECOND | 1970-01-01 00:00:00 | | MILLISECOND | 1970-01-01 00:00:00 | | MICROSECOND | 1970-01-01 00:00:00 | | NANOSECOND | 1970-01-01 00:00:00 | (*) 時間インターバルは特別です: 計算は常に現在の日の00:00:00(真夜中)を基準に行われます。そのため、1時から23時の間の時間値のみが有用です。 もし `WEEK` 単位が指定された場合、`toStartOfInterval` は週の始まりを月曜日と仮定します。この動作は、デフォルトで日曜日から始まる `toStartOfWeek` 関数とは異なります。 **構文** ```sql toStartOfInterval(value, INTERVAL x unit[, time_zone]) toStartOfInterval(value, INTERVAL x unit[, origin[, time_zone]]) ``` エイリアス: `time_bucket`, `date_bin`. 2番目のオーバーロードは、TimescaleDBの `time_bucket()` および PostgreSQLの `date_bin()` 関数をエミュレートします。例えば、 ``` SQL SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30')); ``` 結果: ``` reference ┌───toStartOfInterval(...)─┐ │ 2023-01-01 14:44:30 │ └──────────────────────────┘ ``` **参照** - [date_trunc](#date_trunc) ## toTime 時間を保持しながら、日時を特定の固定日付に変換します。 **構文** ```sql toTime(date[,timezone]) ``` **引数** - `date` — 時間に変換する日付。 [Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 - `timezone`(オプション) — 返される値のタイムゾーン。[String](../data-types/string.md)。 **返される値** - 日付を `1970-01-02` に等しくしながら、時間を保持した DateTime。[DateTime](../data-types/datetime.md)。 :::note `date` 入力引数がサブ秒の成分を含んでいた場合、それらは返される `DateTime` 値において秒精度で削除されます。 ::: **例** クエリ: ```sql SELECT toTime(toDateTime64('1970-12-10 01:20:30.3000',3)) AS result, toTypeName(result); ``` 結果: ```response ┌──────────────result─┬─toTypeName(result)─┐ │ 1970-01-02 01:20:30 │ DateTime │ └─────────────────────┴────────────────────┘ ``` ## toRelativeYearNum 日時を、過去の特定の固定点から経過した年数に変換します。 **構文** ```sql toRelativeYearNum(date) ``` **引数** - `date` — 日付または日時。[Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **返される値** - 過去の固定参照点からの年数。 [UInt16](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toRelativeYearNum(toDate('2002-12-08')) AS y1, toRelativeYearNum(toDate('2010-10-26')) AS y2 ``` 結果: ```response ┌───y1─┬───y2─┐ │ 2002 │ 2010 │ └──────┴──────┘ ``` ## toRelativeQuarterNum 日時を、過去の特定の固定点から経過した四半期数に変換します。 **構文** ```sql toRelativeQuarterNum(date) ``` **引数** - `date` — 日付または日時。[Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **返される値** - 過去の固定参照点からの四半期数。 [UInt32](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toRelativeQuarterNum(toDate('1993-11-25')) AS q1, toRelativeQuarterNum(toDate('2005-01-05')) AS q2 ``` 結果: ```response ┌───q1─┬───q2─┐ │ 7975 │ 8020 │ └──────┴──────┘ ``` ## toRelativeMonthNum 日時を、過去の特定の固定点から経過した月数に変換します。 **構文** ```sql toRelativeMonthNum(date) ``` **引数** - `date` — 日付または日時。[Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **返される値** - 過去の固定参照点からの月数。 [UInt32](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toRelativeMonthNum(toDate('2001-04-25')) AS m1, toRelativeMonthNum(toDate('2009-07-08')) AS m2 ``` 結果: ```response ┌────m1─┬────m2─┐ │ 24016 │ 24115 │ └───────┴───────┘ ``` ## toRelativeWeekNum 日時を、過去の特定の固定点から経過した週数に変換します。 **構文** ```sql toRelativeWeekNum(date) ``` **引数** - `date` — 日付または日時。[Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **返される値** - 過去の固定参照点からの週数。 [UInt32](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toRelativeWeekNum(toDate('2000-02-29')) AS w1, toRelativeWeekNum(toDate('2001-01-12')) AS w2 ``` 結果: ```response ┌───w1─┬───w2─┐ │ 1574 │ 1619 │ └──────┴──────┘ ``` ## toRelativeDayNum 日時を、過去の特定の固定点から経過した日数に変換します。 **構文** ```sql toRelativeDayNum(date) ``` **引数** - `date` — 日付または日時。[Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **返される値** - 過去の固定参照点からの日数。 [UInt32](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toRelativeDayNum(toDate('1993-10-05')) AS d1, toRelativeDayNum(toDate('2000-09-20')) AS d2 ``` 結果: ```response ┌───d1─┬────d2─┐ │ 8678 │ 11220 │ └──────┴───────┘ ``` ## toRelativeHourNum 日時を、過去の特定の固定点から経過した時間数に変換します。 **構文** ```sql toRelativeHourNum(date) ``` **引数** - `date` — 日付または日時。[Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **返される値** - 過去の固定参照点からの時間数。 [UInt32](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toRelativeHourNum(toDateTime('1993-10-05 05:20:36')) AS h1, toRelativeHourNum(toDateTime('2000-09-20 14:11:29')) AS h2 ``` 結果: ```response ┌─────h1─┬─────h2─┐ │ 208276 │ 269292 │ └────────┴────────┘ ``` ## toRelativeMinuteNum 日時を、過去の特定の固定点から経過した分数に変換します。 **構文** ```sql toRelativeMinuteNum(date) ``` **引数** - `date` — 日付または日時。[Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **返される値** - 過去の固定参照点からの分数。 [UInt32](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toRelativeMinuteNum(toDateTime('1993-10-05 05:20:36')) AS m1, toRelativeMinuteNum(toDateTime('2000-09-20 14:11:29')) AS m2 ``` 結果: ```response ┌───────m1─┬───────m2─┐ │ 12496580 │ 16157531 │ └──────────┴──────────┘ ``` ## toRelativeSecondNum 日時を、過去の特定の固定点から経過した秒数に変換します。 **構文** ```sql toRelativeSecondNum(date) ``` **引数** - `date` — 日付または日時。[Date](../data-types/date.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **返される値** - 過去の固定参照点からの秒数。 [UInt32](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toRelativeSecondNum(toDateTime('1993-10-05 05:20:36')) AS s1, toRelativeSecondNum(toDateTime('2000-09-20 14:11:29')) AS s2 ``` 結果: ```response ┌────────s1─┬────────s2─┐ │ 749794836 │ 969451889 │ └───────────┴───────────┘ ``` ## toISOYear 日時を、ISO年を UInt16 数値として変換します。 **構文** ```sql toISOYear(value) ``` **引数** - `value` — 日付または日時。 [Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) **返される値** - 入力値をISO年番号に変換したもの。 [UInt16](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toISOYear(toDate('2024/10/02')) as year1, toISOYear(toDateTime('2024-10-02 01:30:00')) as year2 ``` 結果: ```response ┌─year1─┬─year2─┐ │ 2024 │ 2024 │ └───────┴───────┘ ``` ## toISOWeek 日時を、ISO週番号を含む UInt8 数値に変換します。 **構文** ```sql toISOWeek(value) ``` **引数** - `value` — 日付または日時に関連する値。 **返される値** - `value`を現在のISO週番号に変換したもの。 [UInt8](../data-types/int-uint.md)。 **例** クエリ: ```sql SELECT toISOWeek(toDate('2024/10/02')) AS week1, toISOWeek(toDateTime('2024/10/02 01:30:00')) AS week2 ``` 結果: ```response ┌─week1─┬─week2─┐ │ 40 │ 40 │ └───────┴───────┘ ``` ## toWeek この関数は日時または日付の週番号を返します。 `toWeek()` の2引数形式では、週の始まりを日曜日または月曜日に指定でき、返される値が0から53の範囲か1から53の範囲にするかを指定します。mode引数が省略された場合、デフォルトのmodeは0です。 `toISOWeek()` は、`toWeek(date,3)` に相当する互換性関数です。 以下の表はmode引数の動作を説明します。 | モード | 週の初日 | 範囲 | 週1は最初の週 ... | |------|-------|-------|------------------------| | 0 | 日曜日 | 0-53 | 当年に日曜日を含む週 | | 1 | 月曜日 | 0-53 | 当年に4日以上を含む週 | | 2 | 日曜日 | 1-53 | 当年に日曜日を含む週 | | 3 | 月曜日 | 1-53 | 当年に4日以上を含む週 | | 4 | 日曜日 | 0-53 | 当年に4日以上を含む週 | | 5 | 月曜日 | 0-53 | 当年に月曜日を含む週 | | 6 | 日曜日 | 1-53 | 当年に4日以上を含む週 | | 7 | 月曜日 | 1-53 | 当年に月曜日を含む週 | | 8 | 日曜日 | 1-53 | 1月1日を含む週 | | 9 | 月曜日 | 1-53 | 1月1日を含む週 | 「当年に4日以上を含む」と意味するmode値の場合、週はISO 8601:1988に従って番号が付けられます: - 1月1日を含む週が4日以上ある場合、それは週1です。 - そうでない場合、前の年の最後の週になり、次の週が週1です。 「1月1日を含む」と意味するmode値の場合、1月1日を含む週が週1です。 新年に何日あったかは関係ありません。一日だけでも構いません。 つまり、12月の最後の週が翌年の1月1日を含む場合、それは翌年の週1になります。 **構文** ``` sql toWeek(t[, mode[, time_zone]]) ``` エイリアス: `WEEK` **引数** - `t` – 日付または日時。 - `mode` – オプションのパラメータ。値の範囲は \[0,9\]、デフォルトは0です。 - `timezone` – オプションのパラメータで、他の変換関数と同様に動作します。 最初の引数は、[parseDateTime64BestEffort()](type-conversion-functions.md#parsedatetime64besteffort)でサポートされたフォーマットの[文字列](../data-types/string.md)として指定することもできます。文字列引数のサポートは、特定の3rdパーティツールによって期待されるMySQLとの互換性を理由に存在しています。文字列引数のサポートは、将来的には新しいMySQL互換性設定に依存する可能性があり、文字列解析は一般的に遅いため使用しないことを推奨します。 **例** ``` sql SELECT toDate('2016-12-27') AS date, toWeek(date) AS week0, toWeek(date,1) AS week1, toWeek(date,9) AS week9; ``` ``` text ┌───────date─┬─week0─┬─week1─┬─week9─┐ │ 2016-12-27 │ 52 │ 52 │ 1 │ └────────────┴───────┴───────┴───────┘ ``` ## toYearWeek 日付の年と週を返します。結果の年は、年の最初の週と最後の週で日付引数の年とは異なる場合があります。 mode引数は `toWeek()` のmode引数と同様に機能します。単一引数の構文の場合、mode値0が使用されます。 `toISOYear()` は、`intDiv(toYearWeek(date,3),100)` に相当する互換性関数です。 :::warning `toYearWeek()` によって返される週番号は、`toWeek()` が返すものと異なる場合があります。`toWeek()` は常に指定された年のコンテキストで週番号を返し、`toWeek()` が `0` を返す場合、`toYearWeek()` は前年度の最後の週に対応する値を返します。以下の例の `prev_yearWeek` を参照してください。 ::: **構文** ``` sql toYearWeek(t[, mode[, timezone]]) ``` エイリアス: `YEARWEEK` 最初の引数は、[parseDateTime64BestEffort()](type-conversion-functions.md#parsedatetime64besteffort) でサポートされたフォーマットの[文字列](../data-types/string.md)として指定することもできます。文字列引数のサポートは、特定の3rdパーティツールによって期待されるMySQLとの互換性を理由に存在しています。文字列引数のサポートは、将来的には新しいMySQL互換性設定に依存する可能性があり、文字列解析は一般的に遅いため使用しないことを推奨します。 **例** ``` sql SELECT toDate('2016-12-27') AS date, toYearWeek(date) AS yearWeek0, toYearWeek(date,1) AS yearWeek1, toYearWeek(date,9) AS yearWeek9, toYearWeek(toDate('2022-01-01')) AS prev_yearWeek; ``` ``` text ┌───────date─┬─yearWeek0─┬─yearWeek1─┬─yearWeek9─┬─prev_yearWeek─┐ │ 2016-12-27 │ 201652 │ 201652 │ 201701 │ 202152 │ └────────────┴───────────┴───────────┴───────────┴───────────────┘ ``` ## toDaysSinceYearZero 指定された日付から[0000年1月1日](https://en.wikipedia.org/wiki/Year_zero)までの経過日数を返します。[ISO 8601](https://en.wikipedia.org/wiki/Gregorian_calendar#Proleptic_Gregorian_calendar)で定義される先取りグレゴリオ暦に基づきます。計算はMySQLの[`TO_DAYS()`](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_to-days)関数と同様です。 **構文** ``` sql toDaysSinceYearZero(date[, time_zone]) ``` エイリアス: `TO_DAYS` **引数** - `date` — 年ゼロから経過した日数を計算する日付。[Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 - `time_zone` — タイムゾーンを表す文字列型の定数値または式。[String types](../data-types/string.md) **返される値** 0000-01-01からの日数。[UInt32](../data-types/int-uint.md)。 **例** ``` sql SELECT toDaysSinceYearZero(toDate('2023-09-08')); ``` 結果: ``` text ┌─toDaysSinceYearZero(toDate('2023-09-08')))─┐ │ 713569 │ └────────────────────────────────────────────┘ ``` **参照** - [fromDaysSinceYearZero](#fromdayssinceyearzero) ## fromDaysSinceYearZero 指定された日数から[0000年1月1日](https://en.wikipedia.org/wiki/Year_zero)を過ぎた対応する日付を返します。[ISO 8601](https://en.wikipedia.org/wiki/Gregorian_calendar#Proleptic_Gregorian_calendar)で定義される先取りグレゴリオ暦に基づきます。計算はMySQLの[`FROM_DAYS()`](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_from-days)関数と同様です。 結果が[Date](../data-types/date.md)型の範囲内に収まらない場合、未定義です。 **構文** ``` sql fromDaysSinceYearZero(days) ``` エイリアス: `FROM_DAYS` **引数** - `days` — 年ゼロから経過した日数。 **返される値** 年ゼロから経過した日数に対応する日付。[Date](../data-types/date.md)。 **例** ``` sql SELECT fromDaysSinceYearZero(739136), fromDaysSinceYearZero(toDaysSinceYearZero(toDate('2023-09-08'))); ``` 結果: ``` text ┌─fromDaysSinceYearZero(739136)─┬─fromDaysSinceYearZero(toDaysSinceYearZero(toDate('2023-09-08')))─┐ │ 2023-09-08 │ 2023-09-08 │ └───────────────────────────────┴──────────────────────────────────────────────────────────────────┘ ``` **参照** - [toDaysSinceYearZero](#todayssinceyearzero) ## fromDaysSinceYearZero32 [FromDaysSinceYearZero](#fromdayssinceyearzero) と同様ですが、[Date32](../data-types/date32.md)を返します。 ## age `startdate` と `enddate` の間の `unit` コンポーネントの差を返します。差は1ナノ秒の精度で計算されます。 例えば、`2021-12-29` と `2022-01-01` の間の差は、`day` 単位で3日、`month` 単位で0ヶ月、`year` 単位で0年です。 `age` の代替として、`date_diff` 関数があります。 **構文** ``` sql age('unit', startdate, enddate, [timezone]) ``` **引数** - `unit` — 結果のためのインターバルタイプ。[String](../data-types/string.md)。 可能な値: - `nanosecond`, `nanoseconds`, `ns` - `microsecond`, `microseconds`, `us`, `u` - `millisecond`, `milliseconds`, `ms` - `second`, `seconds`, `ss`, `s` - `minute`, `minutes`, `mi`, `n` - `hour`, `hours`, `hh`, `h` - `day`, `days`, `dd`, `d` - `week`, `weeks`, `wk`, `ww` - `month`, `months`, `mm`, `m` - `quarter`, `quarters`, `qq`, `q` - `year`, `years`, `yyyy`, `yy` - `startdate` — 引き算の最初の時間値(被減数)。[Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 - `enddate` — 引き算の2番目の時間値(減数)。[Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 ``` ```html - `timezone` — [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone) (オプション)。指定された場合、`startdate` と `enddate` の両方に適用されます。指定されていない場合は、`startdate` と `enddate` のタイムゾーンが使用されます。それらが異なる場合、結果は未定義となります。[文字列](../data-types/string.md)。 **戻り値** `enddate` と `startdate` の間の差を `unit` で表現したもの。[整数](../data-types/int-uint.md)。 **例** ``` sql SELECT age('hour', toDateTime('2018-01-01 22:30:00'), toDateTime('2018-01-02 23:00:00')); ``` 結果: ``` text ┌─age('hour', toDateTime('2018-01-01 22:30:00'), toDateTime('2018-01-02 23:00:00'))─┐ │ 24 │ └───────────────────────────────────────────────────────────────────────────────────┘ ``` ``` sql SELECT toDate('2022-01-01') AS e, toDate('2021-12-29') AS s, age('day', s, e) AS day_age, age('month', s, e) AS month__age, age('year', s, e) AS year_age; ``` 結果: ``` text ┌──────────e─┬──────────s─┬─day_age─┬─month__age─┬─year_age─┐ │ 2022-01-01 │ 2021-12-29 │ 3 │ 0 │ 0 │ └────────────┴────────────┴─────────┴────────────┴──────────┘ ``` ## date_diff `startdate` と `enddate` の間で交差した特定の `unit` 境界の数を返します。 差は相対単位を使用して計算されます。例えば、`2021-12-29` と `2022-01-01` の差は単位 `day` で 3 日([toRelativeDayNum](#torelativedaynum) を参照)、単位 `month` で 1 ヶ月([toRelativeMonthNum](#torelativemonthnum) を参照)、単位 `year` で 1 年([toRelativeYearNum](#torelativeyearnum) を参照)です。 単位 `week` が指定された場合、`date_diff` は週が月曜日から始まると仮定します。この挙動は、週がデフォルトで日曜日から始まる関数 `toWeek()` とは異なります。 `date_diff` に代わる関数については、関数 `age` を参照してください。 **構文** ``` sql date_diff('unit', startdate, enddate, [timezone]) ``` 別名: `dateDiff`, `DATE_DIFF`, `timestampDiff`, `timestamp_diff`, `TIMESTAMP_DIFF`. **引数** - `unit` — 結果の間隔の種類。[文字列](../data-types/string.md)。 可能な値: - `nanosecond`, `nanoseconds`, `ns` - `microsecond`, `microseconds`, `us`, `u` - `millisecond`, `milliseconds`, `ms` - `second`, `seconds`, `ss`, `s` - `minute`, `minutes`, `mi`, `n` - `hour`, `hours`, `hh`, `h` - `day`, `days`, `dd`, `d` - `week`, `weeks`, `wk`, `ww` - `month`, `months`, `mm`, `m` - `quarter`, `quarters`, `qq`, `q` - `year`, `years`, `yyyy`, `yy` - `startdate` — 引き算する最初の日時(被減数)。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 - `enddate` — 引き算される第二の日時(減数)。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 - `timezone` — [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone) (オプション)。指定された場合、`startdate` と `enddate` の両方に適用されます。指定されていない場合は、`startdate` と `enddate` のタイムゾーンが使用されます。それらが異なる場合、結果は未定義となります。[文字列](../data-types/string.md)。 **戻り値** `enddate` と `startdate` の間の差を `unit` で表現したもの。[整数](../data-types/int-uint.md)。 **例** ``` sql SELECT dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')); ``` 結果: ``` text ┌─dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00'))─┐ │ 25 │ └────────────────────────────────────────────────────────────────────────────────────────┘ ``` ``` sql SELECT toDate('2022-01-01') AS e, toDate('2021-12-29') AS s, dateDiff('day', s, e) AS day_diff, dateDiff('month', s, e) AS month__diff, dateDiff('year', s, e) AS year_diff; ``` 結果: ``` text ┌──────────e─┬──────────s─┬─day_diff─┬─month__diff─┬─year_diff─┐ │ 2022-01-01 │ 2021-12-29 │ 3 │ 1 │ 1 │ └────────────┴────────────┴──────────┴─────────────┴───────────┘ ``` ## date\_trunc 日付と時刻のデータを指定された日付の部分に切り捨てます。 **構文** ``` sql date_trunc(unit, value[, timezone]) ``` 別名: `dateTrunc`. **引数** - `unit` — 結果を切り捨てる間隔の種類。[文字列リテラル](../syntax.md#syntax-string-literal)。 可能な値: - `nanosecond` - DateTime64 のみ互換性があります - `microsecond` - DateTime64 のみ互換性があります - `milisecond` - DateTime64 のみ互換性があります - `second` - `minute` - `hour` - `day` - `week` - `month` - `quarter` - `year` `unit` 引数は大文字小文字を区別しません。 - `value` — 日付と時刻。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 - `timezone` — 戻り値の [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone) (オプション)。指定されていない場合、関数は `value` パラメータのタイムゾーンを使用します。[文字列](../data-types/string.md)。 **戻り値** - 指定された日付の部分に切り捨てられた値。[日時](../data-types/datetime.md)。 **例** タイムゾーンなしのクエリ: ``` sql SELECT now(), date_trunc('hour', now()); ``` 結果: ``` text ┌───────────────now()─┬─date_trunc('hour', now())─┐ │ 2020-09-28 10:40:45 │ 2020-09-28 10:00:00 │ └─────────────────────┴───────────────────────────┘ ``` 指定されたタイムゾーンでのクエリ: ```sql SELECT now(), date_trunc('hour', now(), 'Asia/Istanbul'); ``` 結果: ```text ┌───────────────now()─┬─date_trunc('hour', now(), 'Asia/Istanbul')─┐ │ 2020-09-28 10:46:26 │ 2020-09-28 13:00:00 │ └─────────────────────┴────────────────────────────────────────────┘ ``` **参照してください** - [toStartOfInterval](#tostartofinterval) ## date\_add 指定された日数または日時に時間間隔または日付間隔を追加します。 加算の結果がデータ型の範囲外の値になる場合、結果は未定義になります。 **構文** ``` sql date_add(unit, value, date) ``` 代替構文: ``` sql date_add(date, INTERVAL value unit) ``` 別名: `dateAdd`, `DATE_ADD`. **引数** - `unit` — 追加する間隔の種類。注: これは [文字列](../data-types/string.md) ではなく、引用されない必要があります。 可能な値: - `second` - `minute` - `hour` - `day` - `week` - `month` - `quarter` - `year` - `value` — 追加する間隔の値。[整数](../data-types/int-uint.md)。 - `date` — `value` が追加される日付または日付と時刻。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **戻り値** `date` に `value` を追加した結果の日付または日付と時刻。 [日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **例** ```sql SELECT date_add(YEAR, 3, toDate('2018-01-01')); ``` 結果: ```text ┌─plus(toDate('2018-01-01'), toIntervalYear(3))─┐ │ 2021-01-01 │ └───────────────────────────────────────────────┘ ``` ```sql SELECT date_add(toDate('2018-01-01'), INTERVAL 3 YEAR); ``` 結果: ```text ┌─plus(toDate('2018-01-01'), toIntervalYear(3))─┐ │ 2021-01-01 │ └───────────────────────────────────────────────┘ ``` **参照してください** - [addDate](#adddate) ## date\_sub 指定された日付または日時から時間間隔または日付間隔を引き算します。 減算の結果がデータ型の範囲外の値になる場合、結果は未定義になります。 **構文** ``` sql date_sub(unit, value, date) ``` 代替構文: ``` sql date_sub(date, INTERVAL value unit) ``` 別名: `dateSub`, `DATE_SUB`. **引数** - `unit` — 減算する間隔の種類。注: これは [文字列](../data-types/string.md) ではなく、引用されない必要があります。 可能な値: - `second` - `minute` - `hour` - `day` - `week` - `month` - `quarter` - `year` - `value` — 減算する間隔の値。[整数](../data-types/int-uint.md)。 - `date` — `value` が引かれる日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **戻り値** `date` から `value` を引いた結果の日付または日付と時刻。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **例** ``` sql SELECT date_sub(YEAR, 3, toDate('2018-01-01')); ``` 結果: ``` text ┌─minus(toDate('2018-01-01'), toIntervalYear(3))─┐ │ 2015-01-01 │ └────────────────────────────────────────────────┘ ``` ``` sql SELECT date_sub(toDate('2018-01-01'), INTERVAL 3 YEAR); ``` 結果: ``` text ┌─minus(toDate('2018-01-01'), toIntervalYear(3))─┐ │ 2015-01-01 │ └────────────────────────────────────────────────┘ ``` **参照してください** - [subDate](#subdate) ## timestamp\_add 指定された日時と提供された日付または日時を加算します。 加算の結果がデータ型の範囲外の値になる場合、結果は未定義になります。 **構文** ``` sql timestamp_add(date, INTERVAL value unit) ``` 別名: `timeStampAdd`, `TIMESTAMP_ADD`. **引数** - `date` — 日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 - `value` — 追加する間隔の値。[整数](../data-types/int-uint.md)。 - `unit` — 追加する間隔の種類。[文字列](../data-types/string.md)。 可能な値: - `second` - `minute` - `hour` - `day` - `week` - `month` - `quarter` - `year` **戻り値** 指定された `value` を `unit` で日付に追加した結果の日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **例** ```sql select timestamp_add(toDate('2018-01-01'), INTERVAL 3 MONTH); ``` 結果: ```text ┌─plus(toDate('2018-01-01'), toIntervalMonth(3))─┐ │ 2018-04-01 │ └────────────────────────────────────────────────┘ ``` ## timestamp\_sub 提供された日付または日時から時間間隔を引き算します。 引き算の結果がデータ型の範囲外の値になる場合、結果は未定義になります。 **構文** ``` sql timestamp_sub(unit, value, date) ``` 別名: `timeStampSub`, `TIMESTAMP_SUB`. **引数** - `unit` — 減算する間隔の種類。[文字列](../data-types/string.md)。 可能な値: - `second` - `minute` - `hour` - `day` - `week` - `month` - `quarter` - `year` - `value` — 減算する間隔の値。[整数](../data-types/int-uint.md)。 - `date` — 日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **戻り値** 指定された `value` を `unit` で日付から引いた結果の日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **例** ```sql select timestamp_sub(MONTH, 5, toDateTime('2018-12-18 01:02:03')); ``` 結果: ```text ┌─minus(toDateTime('2018-12-18 01:02:03'), toIntervalMonth(5))─┐ │ 2018-07-18 01:02:03 │ └──────────────────────────────────────────────────────────────┘ ``` ## addDate 指定された日付、日時、または文字列形式の日付/日時に時間間隔を追加します。 加算の結果がデータ型の範囲外の値になる場合、結果は未定義になります。 **構文** ```sql addDate(date, interval) ``` **引数** - `date` — 指定された間隔が追加される日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md)、[DateTime64](../data-types/datetime64.md)、または [文字列](../data-types/string.md) - `interval` — 加える間隔。[間隔](../data-types/special-data-types/interval.md)。 **戻り値** `date` に `interval` を追加した結果の日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **例** ```sql SELECT addDate(toDate('2018-01-01'), INTERVAL 3 YEAR); ``` 結果: ```text ┌─addDate(toDate('2018-01-01'), toIntervalYear(3))─┐ │ 2021-01-01 │ └──────────────────────────────────────────────────┘ ``` 別名: `ADDDATE` **参照してください** - [date_add](#date_add) ## subDate 指定された日付、日時、または文字列形式の日付/日時から時間間隔を引き算します。 減算の結果がデータ型の範囲外の値になる場合、結果は未定義になります。 **構文** ```sql subDate(date, interval) ``` **引数** - `date` — `interval` が引かれる日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md)、[DateTime64](../data-types/datetime64.md)、または [文字列](../data-types/string.md) - `interval` — 引く間隔。[間隔](../data-types/special-data-types/interval.md)。 **戻り値** `date` から `interval` を引いた結果の日付または日時。[日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **例** ```sql SELECT subDate(toDate('2018-01-01'), INTERVAL 3 YEAR); ``` 結果: ```text ┌─subDate(toDate('2018-01-01'), toIntervalYear(3))─┐ │ 2015-01-01 │ └──────────────────────────────────────────────────┘ ``` 別名: `SUBDATE` **参照してください** - [date_sub](#date_sub) ## now クエリ解析の瞬間の現在の日付と時刻を返します。この関数は定数式です。 別名: `current_timestamp`. **構文** ``` sql now([timezone]) ``` **引数** - `timezone` — 戻り値の [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone) (オプション)。 [文字列](../data-types/string.md)。 **戻り値** - 現在の日付と時刻。[日時](../data-types/datetime.md)。 **例** タイムゾーンなしのクエリ: ``` sql SELECT now(); ``` 結果: ``` text ┌───────────────now()─┐ │ 2020-10-17 07:42:09 │ └─────────────────────┘ ``` 指定されたタイムゾーンでのクエリ: ``` sql SELECT now('Asia/Istanbul'); ``` 結果: ``` text ┌─now('Asia/Istanbul')─┐ │ 2020-10-17 10:42:23 │ └──────────────────────┘ ``` ## now64 クエリ解析の瞬間の現在の日付と時刻をサブ秒精度で返します。この関数は定数式です。 **構文** ``` sql now64([scale], [timezone]) ``` **引数** - `scale` - チックサイズ(精度):10-精度 秒。妥当な範囲: [0 : 9]。典型的には - 3 (デフォルト) (ミリ秒)、6 (マイクロ秒)、9 (ナノ秒) が使用されます。 - `timezone` — 戻り値の [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone) (オプション)。 [文字列](../data-types/string.md)。 **戻り値** - サブ秒精度での現在の日付と時刻。[DateTime64](../data-types/datetime64.md)。 **例** ``` sql SELECT now64(), now64(9, 'Asia/Istanbul'); ``` 結果: ``` text ┌─────────────────now64()─┬─────now64(9, 'Asia/Istanbul')─┐ │ 2022-08-21 19:34:26.196 │ 2022-08-21 22:34:26.196542766 │ └─────────────────────────┴───────────────────────────────┘ ``` ## nowInBlock {#nowInBlock} データの各ブロックを処理する瞬間の現在の日付と時刻を返します。[now](#now) の関数とは異なり、これは定数式ではなく、長時間実行されるクエリの場合、異なるブロックで返される値が異なります。 長時間実行される INSERT SELECT クエリで現在の時刻を生成するためにこの関数を使用することが意味があります。 **構文** ``` sql nowInBlock([timezone]) ``` **引数** - `timezone` — 戻り値の [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone) (オプション)。 [文字列](../data-types/string.md)。 **戻り値** - 各データブロックの処理の瞬間の現在の日付と時刻。[日時](../data-types/datetime.md)。 **例** ``` sql SELECT now(), nowInBlock(), sleep(1) FROM numbers(3) SETTINGS max_block_size = 1 FORMAT PrettyCompactMonoBlock ``` 結果: ``` text ┌───────────────now()─┬────────nowInBlock()─┬─sleep(1)─┐ │ 2022-08-21 19:41:19 │ 2022-08-21 19:41:19 │ 0 │ │ 2022-08-21 19:41:19 │ 2022-08-21 19:41:20 │ 0 │ │ 2022-08-21 19:41:19 │ 2022-08-21 19:41:21 │ 0 │ └─────────────────────┴─────────────────────┴──────────┘ ``` ## today {#today} クエリ解析の瞬間の現在の日付を返します。これは `toDate(now())` と同じであり、エイリアスとして `curdate`, `current_date` があります。 **構文** ```sql today() ``` **引数** - なし **戻り値** - 現在の日付。[日付](../data-types/date.md)。 **例** クエリ: ```sql SELECT today() AS today, curdate() AS curdate, current_date() AS current_date FORMAT Pretty ``` **結果**: 2024年3月3日に上記のクエリを実行すると、次の応答が返されます。 ```response ┏━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓ ┃ today ┃ curdate ┃ current_date ┃ ┡━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩ │ 2024-03-03 │ 2024-03-03 │ 2024-03-03 │ └────────────┴────────────┴──────────────┘ ``` ## yesterday {#yesterday} 引数を受け付けず、クエリ解析のいずれかの瞬間で昨日の日付を返します。 `today() - 1` と同じです。 ## timeSlot 時間を30分間隔の開始時刻に丸めます。 **構文** ```sql timeSlot(time[, time_zone]) ``` **引数** - `time` — 30分間隔の開始時刻に丸める時間。[日時](../data-types/datetime.md)/[Date32](../data-types/date32.md)/[DateTime64](../data-types/datetime64.md)。 - `time_zone` — タイムゾーンを表す文字列型の定数値または式。[文字列](../data-types/string.md)。 :::note この関数は拡張されたタイプ `Date32` と `DateTime64` の値を引数として受け取ることができますが、通常の範囲(年 1970 から 2149 までの `Date` / 2106 までの `DateTime`)を超える時間を渡すと、誤った結果が生成されます。 ::: **戻り値の型** - 30分間隔の開始時刻に丸められた時間を返します。[日時](../data-types/datetime.md)。 **例** クエリ: ```sql SELECT timeSlot(toDateTime('2000-01-02 03:04:05', 'UTC')); ``` 結果: ```response ┌─timeSlot(toDateTime('2000-01-02 03:04:05', 'UTC'))─┐ │ 2000-01-02 03:00:00 │ └────────────────────────────────────────────────────┘ ``` ## toYYYYMM 日付または日付と時刻を年と月の数(YYYY \* 100 + MM)を含む UInt32 数に変換します。第二のオプションのタイムゾーン引数を受け付けます。提供された場合、タイムゾーンは文字列定数でなければなりません。 この関数は関数 `YYYYMMDDToDate()` の逆です。 **例** ``` sql SELECT toYYYYMM(now(), 'US/Eastern') ``` 結果: ``` text ┌─toYYYYMM(now(), 'US/Eastern')─┐ │ 202303 │ └───────────────────────────────┘ ``` ## toYYYYMMDD 日付または日付と時刻を年、月、日を含む UInt32 数(YYYY \* 10000 + MM \* 100 + DD)に変換します。第二のオプションのタイムゾーン引数を受け付けます。提供された場合、タイムゾーンは文字列定数でなければなりません。 **例** ```sql SELECT toYYYYMMDD(now(), 'US/Eastern') ``` 結果: ```response ┌─toYYYYMMDD(now(), 'US/Eastern')─┐ │ 20230302 │ └─────────────────────────────────┘ ``` ## toYYYYMMDDhhmmss 日付または日付と時刻を年、月、日、時、分、秒を含む UInt64 数(YYYY \* 10000000000 + MM \* 100000000 + DD \* 1000000 + hh \* 10000 + mm \* 100 + ss)に変換します。第二のオプションのタイムゾーン引数を受け付けます。提供された場合、タイムゾーンは文字列定数でなければなりません。 **例** ```sql SELECT toYYYYMMDDhhmmss(now(), 'US/Eastern') ``` 結果: ```response ┌─toYYYYMMDDhhmmss(now(), 'US/Eastern')─┐ │ 20230302112209 │ └───────────────────────────────────────┘ ``` ## YYYYMMDDToDate 年、月、日を含む数値を [日付](../data-types/date.md) に変換します。 この関数は関数 `toYYYYMMDD()` の逆です。 入力が有効な日付値をエンコードしない場合、出力は未定義です。 **構文** ```sql YYYYMMDDToDate(yyyymmdd); ``` **引数** - `yyyymmdd` - 年、月、および日を表す数値。[整数](../data-types/int-uint.md)、[浮動小数点](../data-types/float.md)または [小数](../data-types/decimal.md)。 **戻り値** - 引数から作成された日付。[日付](../data-types/date.md)。 **例** ```sql SELECT YYYYMMDDToDate(20230911); ``` 結果: ```response ┌─toYYYYMMDD(20230911)─┐ │ 2023-09-11 │ └──────────────────────┘ ``` ## YYYYMMDDToDate32 関数 `YYYYMMDDToDate()` と同様ですが、[Date32](../data-types/date32.md) を生成します。 ## YYYYMMDDhhmmssToDateTime 年、月、日、時、分、秒を含む数値を [日時](../data-types/datetime.md) に変換します。 入力が有効な日時値をエンコードしない場合、出力は未定義です。 この関数は関数 `toYYYYMMDDhhmmss()` の逆です。 **構文** ```sql YYYYMMDDhhmmssToDateTime(yyyymmddhhmmss[, timezone]); ``` **引数** - `yyyymmddhhmmss` - 年、月、日を表す数値。[整数](../data-types/int-uint.md)、[浮動小数点](../data-types/float.md)または [小数](../data-types/decimal.md)。 - `timezone` - 戻り値の [タイムゾーン](../../operations/server-configuration-parameters/settings.md#timezone) (オプション)。 **戻り値** - 引数から作成された日時。[日時](../data-types/datetime.md)。 **例** ```sql SELECT YYYYMMDDToDateTime(20230911131415); ``` 結果: ```response ┌──────YYYYMMDDhhmmssToDateTime(20230911131415)─┐ │ 2023-09-11 13:14:15 │ └───────────────────────────────────────────────┘ ``` ## YYYYMMDDhhmmssToDateTime64 関数 `YYYYMMDDhhmmssToDate()` と同様ですが、[DateTime64](../data-types/datetime64.md) を生成します。 必要に応じて `timezone` パラメータの後に追加のオプションの `precision` パラメータを受け取ります。 ## changeYear 日付または日時の年の部分を変更します。 **構文** ``` sql changeYear(date_or_datetime, value) ``` **引数** - `date_or_datetime` - [日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) - `value` - 年の新しい値。[整数](../../sql-reference/data-types/int-uint.md)。 **戻り値** - `date_or_datetime` と同じ型。 **例** ``` sql SELECT changeYear(toDate('1999-01-01'), 2000), changeYear(toDateTime64('1999-01-01 00:00:00.000', 3), 2000); ``` 結果: ``` ┌─changeYear(toDate('1999-01-01'), 2000)─┬─changeYear(toDateTime64('1999-01-01 00:00:00.000', 3), 2000)─┐ │ 2000-01-01 │ 2000-01-01 00:00:00.000 │ └────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘ ``` ## changeMonth 日付または日時の月の部分を変更します。 **構文** ``` sql changeMonth(date_or_datetime, value) ``` **引数** - `date_or_datetime` - [日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) - `value` - 月の新しい値。[整数](../../sql-reference/data-types/int-uint.md)。 **戻り値** - `date_or_datetime` と同じ型の値を返します。 **例** ``` sql SELECT changeMonth(toDate('1999-01-01'), 2), changeMonth(toDateTime64('1999-01-01 00:00:00.000', 3), 2); ``` 結果: ``` ┌─changeMonth(toDate('1999-01-01'), 2)─┬─changeMonth(toDateTime64('1999-01-01 00:00:00.000', 3), 2)─┐ │ 1999-02-01 │ 1999-02-01 00:00:00.000 │ └──────────────────────────────────────┴────────────────────────────────────────────────────────────┘ ``` ## changeDay 日付または日時の日の部分を変更します。 **構文** ``` sql changeDay(date_or_datetime, value) ``` **引数** - `date_or_datetime` - [日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) - `value` - 日の新しい値。[整数](../../sql-reference/data-types/int-uint.md)。 **戻り値** - `date_or_datetime` と同じ型の値を返します。 **例** ``` sql SELECT changeDay(toDate('1999-01-01'), 5), changeDay(toDateTime64('1999-01-01 00:00:00.000', 3), 5); ``` 結果: ``` ┌─changeDay(toDate('1999-01-01'), 5)─┬─changeDay(toDateTime64('1999-01-01 00:00:00.000', 3), 5)─┐ │ 1999-01-05 │ 1999-01-05 00:00:00.000 │ └────────────────────────────────────┴──────────────────────────────────────────────────────────┘ ``` ## changeHour 日付または日時の時間の部分を変更します。 **構文** ``` sql changeHour(date_or_datetime, value) ``` **引数** - `date_or_datetime` - [日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) - `value` - 時間の新しい値。[整数](../../sql-reference/data-types/int-uint.md)。 **戻り値** - `date_or_datetime` と同じ型の値を返します。入力が [日付](../data-types/date.md) の場合、[日時](../data-types/datetime.md) が返されます。入力が [Date32](../data-types/date32.md) の場合、[DateTime64](../data-types/datetime64.md) が返されます。 **例** ``` sql SELECT changeHour(toDate('1999-01-01'), 14), changeHour(toDateTime64('1999-01-01 00:00:00.000', 3), 14); ``` 結果: ``` ┌─changeHour(toDate('1999-01-01'), 14)─┬─changeHour(toDateTime64('1999-01-01 00:00:00.000', 3), 14)─┐ │ 1999-01-01 14:00:00 │ 1999-01-01 14:00:00.000 │ └──────────────────────────────────────┴────────────────────────────────────────────────────────────┘ ``` ## changeMinute 日付または日時の分の部分を変更します。 **構文** ``` sql changeMinute(date_or_datetime, value) ``` **引数** - `date_or_datetime` - [日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) - `value` - 分の新しい値。[整数](../../sql-reference/data-types/int-uint.md)。 **戻り値** - `date_or_datetime` と同じ型の値を返します。入力が [日付](../data-types/date.md) の場合、[日時](../data-types/datetime.md) が返されます。入力が [Date32](../data-types/date32.md) の場合、[DateTime64](../data-types/datetime64.md) が返されます。 **例** ``` sql SELECT changeMinute(toDate('1999-01-01'), 15), changeMinute(toDateTime64('1999-01-01 00:00:00.000', 3), 15); ``` 結果: ``` ┌─changeMinute(toDate('1999-01-01'), 15)─┬─changeMinute(toDateTime64('1999-01-01 00:00:00.000', 3), 15)─┐ │ 1999-01-01 00:15:00 │ 1999-01-01 00:15:00.000 │ └────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘ ``` ## changeSecond 日付または日時の秒の部分を変更します。 **構文** ``` sql changeSecond(date_or_datetime, value) ``` **引数** - `date_or_datetime` - [日付](../data-types/date.md)、[Date32](../data-types/date32.md)、[日時](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) - `value` - 秒の新しい値。[整数](../../sql-reference/data-types/int-uint.md)。 **戻り値** - `date_or_datetime` と同じ型の値を返します。入力が [日付](../data-types/date.md) の場合、[日時](../data-types/datetime.md) が返されます。入力が [Date32](../data-types/date32.md) の場合、[DateTime64](../data-types/datetime64.md) が返されます。 **例** ``` sql SELECT changeSecond(toDate('1999-01-01'), 15), changeSecond(toDateTime64('1999-01-01 00:00:00.000', 3), 15); ``` 結果: ``` ┌─changeSecond(toDate('1999-01-01'), 15)─┬─changeSecond(toDateTime64('1999-01-01 00:00:00.000', 3), 15)─┐ │ 1999-01-01 00:00:15 │ 1999-01-01 00:00:15.000 │ └────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘ ``` ## addYears 日付、日時、または文字列形式の日付/日時に指定された年の数を追加します。 **構文** ```sql addYears(date, num) ``` **引数** - `date`: 指定された年の数を追加する日付/日時。[日付](../data-types/date.md) / [Date32](../data-types/date32.md) / [日時](../data-types/datetime.md) / [DateTime64](../data-types/datetime64.md)、[文字列](../data-types/string.md)。 - `num`: 追加する年の数。[(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **戻り値** ``` ```html - `date` に `num` 年を加えます。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addYears(date, 1) AS add_years_with_date, addYears(date_time, 1) AS add_years_with_date_time, addYears(date_time_string, 1) AS add_years_with_date_time_string ``` ```response ┌─add_years_with_date─┬─add_years_with_date_time─┬─add_years_with_date_time_string─┐ │ 2025-01-01 │ 2025-01-01 00:00:00 │ 2025-01-01 00:00:00.000 │ └─────────────────────┴──────────────────────────┴─────────────────────────────────┘ ``` ## addQuarters 指定された数の四半期を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付に加えます。 **構文** ```sql addQuarters(date, num) ``` **パラメーター** - `date`: 指定された数の四半期を加える日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加える四半期の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` に `num` 四半期を加えます。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addQuarters(date, 1) AS add_quarters_with_date, addQuarters(date_time, 1) AS add_quarters_with_date_time, addQuarters(date_time_string, 1) AS add_quarters_with_date_time_string ``` ```response ┌─add_quarters_with_date─┬─add_quarters_with_date_time─┬─add_quarters_with_date_time_string─┐ │ 2024-04-01 │ 2024-04-01 00:00:00 │ 2024-04-01 00:00:00.000 │ └────────────────────────┴─────────────────────────────┴────────────────────────────────────┘ ``` ## addMonths 指定された数の月を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付に加えます。 **構文** ```sql addMonths(date, num) ``` **パラメーター** - `date`: 指定された数の月を加える日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加える月の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` に `num` 月を加えます。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addMonths(date, 6) AS add_months_with_date, addMonths(date_time, 6) AS add_months_with_date_time, addMonths(date_time_string, 6) AS add_months_with_date_time_string ``` ```response ┌─add_months_with_date─┬─add_months_with_date_time─┬─add_months_with_date_time_string─┐ │ 2024-07-01 │ 2024-07-01 00:00:00 │ 2024-07-01 00:00:00.000 │ └──────────────────────┴───────────────────────────┴──────────────────────────────────┘ ``` ## addWeeks 指定された数の週を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付に加えます。 **構文** ```sql addWeeks(date, num) ``` **パラメーター** - `date`: 指定された数の週を加える日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加える週の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` に `num` 週間を加えます。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addWeeks(date, 5) AS add_weeks_with_date, addWeeks(date_time, 5) AS add_weeks_with_date_time, addWeeks(date_time_string, 5) AS add_weeks_with_date_time_string ``` ```response ┌─add_weeks_with_date─┬─add_weeks_with_date_time─┬─add_weeks_with_date_time_string─┐ │ 2024-02-05 │ 2024-02-05 00:00:00 │ 2024-02-05 00:00:00.000 │ └─────────────────────┴──────────────────────────┴─────────────────────────────────┘ ``` ## addDays 指定された数の日を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付に加えます。 **構文** ```sql addDays(date, num) ``` **パラメーター** - `date`: 指定された数の日を加える日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加える日の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` に `num` 日を加えます。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addDays(date, 5) AS add_days_with_date, addDays(date_time, 5) AS add_days_with_date_time, addDays(date_time_string, 5) AS add_days_with_date_time_string ``` ```response ┌─add_days_with_date─┬─add_days_with_date_time─┬─add_days_with_date_time_string─┐ │ 2024-01-06 │ 2024-01-06 00:00:00 │ 2024-01-06 00:00:00.000 │ └────────────────────┴─────────────────────────┴────────────────────────────────┘ ``` ## addHours 指定された数の時間を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付に加えます。 **構文** ```sql addHours(date, num) ``` **パラメーター** - `date`: 指定された数の時間を加える日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加える時間の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` に `num` 時間を加えます。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addHours(date, 12) AS add_hours_with_date, addHours(date_time, 12) AS add_hours_with_date_time, addHours(date_time_string, 12) AS add_hours_with_date_time_string ``` ```response ┌─add_hours_with_date─┬─add_hours_with_date_time─┬─add_hours_with_date_time_string─┐ │ 2024-01-01 12:00:00 │ 2024-01-01 12:00:00 │ 2024-01-01 12:00:00.000 │ └─────────────────────┴──────────────────────────┴─────────────────────────────────┘ ``` ## addMinutes 指定された数の分を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付に加えます。 **構文** ```sql addMinutes(date, num) ``` **パラメーター** - `date`: 指定された数の分を加える日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加える分の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` に `num` 分を加えます。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addMinutes(date, 20) AS add_minutes_with_date, addMinutes(date_time, 20) AS add_minutes_with_date_time, addMinutes(date_time_string, 20) AS add_minutes_with_date_time_string ``` ```response ┌─add_minutes_with_date─┬─add_minutes_with_date_time─┬─add_minutes_with_date_time_string─┐ │ 2024-01-01 00:20:00 │ 2024-01-01 00:20:00 │ 2024-01-01 00:20:00.000 │ └───────────────────────┴────────────────────────────┴───────────────────────────────────┘ ``` ## addSeconds 指定された数の秒を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付に加えます。 **構文** ```sql addSeconds(date, num) ``` **パラメーター** - `date`: 指定された数の秒を加える日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加える秒の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` に `num` 秒を加えます。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addSeconds(date, 30) AS add_seconds_with_date, addSeconds(date_time, 30) AS add_seconds_with_date_time, addSeconds(date_time_string, 30) AS add_seconds_with_date_time_string ``` ```response ┌─add_seconds_with_date─┬─add_seconds_with_date_time─┬─add_seconds_with_date_time_string─┐ │ 2024-01-01 00:00:30 │ 2024-01-01 00:00:30 │ 2024-01-01 00:00:30.000 │ └───────────────────────┴────────────────────────────┴───────────────────────────────────┘ ``` ## addMilliseconds 指定された数のミリ秒を時刻付きの日付または文字列エンコードされた時刻付きの日付に加えます。 **構文** ```sql addMilliseconds(date_time, num) ``` **パラメーター** - `date_time`: 指定された数のミリ秒を加える時刻付き日付。 [DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加えるミリ秒の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date_time` に `num` ミリ秒を加えます。 [DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addMilliseconds(date_time, 1000) AS add_milliseconds_with_date_time, addMilliseconds(date_time_string, 1000) AS add_milliseconds_with_date_time_string ``` ```response ┌─add_milliseconds_with_date_time─┬─add_milliseconds_with_date_time_string─┐ │ 2024-01-01 00:00:01.000 │ 2024-01-01 00:00:01.000 │ └─────────────────────────────────┴────────────────────────────────────────┘ ``` ## addMicroseconds 指定された数のマイクロ秒を時刻付きの日付または文字列エンコードされた時刻付きの日付に加えます。 **構文** ```sql addMicroseconds(date_time, num) ``` **パラメーター** - `date_time`: 指定された数のマイクロ秒を加える時刻付き日付。 [DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加えるマイクロ秒の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date_time` に `num` マイクロ秒を加えます。 [DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addMicroseconds(date_time, 1000000) AS add_microseconds_with_date_time, addMicroseconds(date_time_string, 1000000) AS add_microseconds_with_date_time_string ``` ```response ┌─add_microseconds_with_date_time─┬─add_microseconds_with_date_time_string─┐ │ 2024-01-01 00:00:01.000000 │ 2024-01-01 00:00:01.000000 │ └─────────────────────────────────┴────────────────────────────────────────┘ ``` ## addNanoseconds 指定された数のナノ秒を時刻付きの日付または文字列エンコードされた時刻付きの日付に加えます。 **構文** ```sql addNanoseconds(date_time, num) ``` **パラメーター** - `date_time`: 指定された数のナノ秒を加える時刻付き日付。 [DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 加えるナノ秒の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date_time` に `num` ナノ秒を加えます。 [DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT addNanoseconds(date_time, 1000) AS add_nanoseconds_with_date_time, addNanoseconds(date_time_string, 1000) AS add_nanoseconds_with_date_time_string ``` ```response ┌─add_nanoseconds_with_date_time─┬─add_nanoseconds_with_date_time_string─┐ │ 2024-01-01 00:00:00.000001000 │ 2024-01-01 00:00:00.000001000 │ └────────────────────────────────┴───────────────────────────────────────┘ ``` ## addInterval 別の間隔または間隔のタプルを追加します。 **構文** ```sql addInterval(interval_1, interval_2) ``` **パラメーター** - `interval_1`: 最初の間隔または間隔のタプル。 [interval](../data-types/special-data-types/interval.md)、[tuple](../data-types/tuple.md)([interval](../data-types/special-data-types/interval.md))。 - `interval_2`: 追加される2番目の間隔。 [interval](../data-types/special-data-types/interval.md)。 **返却値** - 間隔のタプルを返します。 [tuple](../data-types/tuple.md)([interval](../data-types/special-data-types/interval.md))。 :::note 同じタイプの間隔は、単一の間隔にまとめられます。たとえば、`toIntervalDay(1)` と `toIntervalDay(2)` が渡されると、結果は `(3)` になります。 ::: **例** クエリ: ```sql SELECT addInterval(INTERVAL 1 DAY, INTERVAL 1 MONTH); SELECT addInterval((INTERVAL 1 DAY, INTERVAL 1 YEAR), INTERVAL 1 MONTH); SELECT addInterval(INTERVAL 2 DAY, INTERVAL 1 DAY); ``` 結果: ```response ┌─addInterval(toIntervalDay(1), toIntervalMonth(1))─┐ │ (1,1) │ └───────────────────────────────────────────────────┘ ┌─addInterval((toIntervalDay(1), toIntervalYear(1)), toIntervalMonth(1))─┐ │ (1,1,1) │ └────────────────────────────────────────────────────────────────────────┘ ┌─addInterval(toIntervalDay(2), toIntervalDay(1))─┐ │ (3) │ └─────────────────────────────────────────────────┘ ``` ## addTupleOfIntervals 間隔のタプルを連続して日付または日時に加えます。 **構文** ```sql addTupleOfIntervals(interval_1, interval_2) ``` **パラメーター** - `date`: 最初の間隔または間隔のタプル。 [date](../data-types/date.md)/[date32](../data-types/date32.md)/[datetime](../data-types/datetime.md)/[datetime64](../data-types/datetime64.md)。 - `intervals`: `date` に加える間隔のタプル。 [tuple](../data-types/tuple.md)([interval](../data-types/special-data-types/interval.md))。 **返却値** - `intervals` を加えた `date` を返します。 [date](../data-types/date.md)/[date32](../data-types/date32.md)/[datetime](../data-types/datetime.md)/[datetime64](../data-types/datetime64.md)。 **例** クエリ: ```sql WITH toDate('2018-01-01') AS date SELECT addTupleOfIntervals(date, (INTERVAL 1 DAY, INTERVAL 1 MONTH, INTERVAL 1 YEAR)) ``` 結果: ```response ┌─addTupleOfIntervals(date, (toIntervalDay(1), toIntervalMonth(1), toIntervalYear(1)))─┐ │ 2019-02-02 │ └──────────────────────────────────────────────────────────────────────────────────────┘ ``` ## subtractYears 指定された数の年を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付から減算します。 **構文** ```sql subtractYears(date, num) ``` **パラメーター** - `date`: 指定された数の年を減算する日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算する年の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` から `num` 年を減算します。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractYears(date, 1) AS subtract_years_with_date, subtractYears(date_time, 1) AS subtract_years_with_date_time, subtractYears(date_time_string, 1) AS subtract_years_with_date_time_string ``` ```response ┌─subtract_years_with_date─┬─subtract_years_with_date_time─┬─subtract_years_with_date_time_string─┐ │ 2023-01-01 │ 2023-01-01 00:00:00 │ 2023-01-01 00:00:00.000 │ └──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘ ``` ## subtractQuarters 指定された数の四半期を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付から減算します。 **構文** ```sql subtractQuarters(date, num) ``` **パラメーター** - `date`: 指定された数の四半期を減算する日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算する四半期の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` から `num` 四半期を減算します。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractQuarters(date, 1) AS subtract_quarters_with_date, subtractQuarters(date_time, 1) AS subtract_quarters_with_date_time, subtractQuarters(date_time_string, 1) AS subtract_quarters_with_date_time_string ``` ```response ┌─subtract_quarters_with_date─┬─subtract_quarters_with_date_time─┬─subtract_quarters_with_date_time_string─┐ │ 2023-10-01 │ 2023-10-01 00:00:00 │ 2023-10-01 00:00:00.000 │ └─────────────────────────────┴──────────────────────────────────┴─────────────────────────────────────────┘ ``` ## subtractMonths 指定された数の月を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付から減算します。 **構文** ```sql subtractMonths(date, num) ``` **パラメーター** - `date`: 指定された数の月を減算する日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算する月の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` から `num` 月を減算します。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractMonths(date, 1) AS subtract_months_with_date, subtractMonths(date_time, 1) AS subtract_months_with_date_time, subtractMonths(date_time_string, 1) AS subtract_months_with_date_time_string ``` ```response ┌─subtract_months_with_date─┬─subtract_months_with_date_time─┬─subtract_months_with_date_time_string─┐ │ 2023-12-01 │ 2023-12-01 00:00:00 │ 2023-12-01 00:00:00.000 │ └───────────────────────────┴────────────────────────────────┴───────────────────────────────────────┘ ``` ## subtractWeeks 指定された数の週を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付から減算します。 **構文** ```sql subtractWeeks(date, num) ``` **パラメーター** - `date`: 指定された数の週を減算する日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算する週の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` から `num` 週間を減算します。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractWeeks(date, 1) AS subtract_weeks_with_date, subtractWeeks(date_time, 1) AS subtract_weeks_with_date_time, subtractWeeks(date_time_string, 1) AS subtract_weeks_with_date_time_string ``` ```response ┌─subtract_weeks_with_date─┬─subtract_weeks_with_date_time─┬─subtract_weeks_with_date_time_string─┐ │ 2023-12-25 │ 2023-12-25 00:00:00 │ 2023-12-25 00:00:00.000 │ └──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘ ``` ## subtractDays 指定された数の日を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付から減算します。 **構文** ```sql subtractDays(date, num) ``` **パラメーター** - `date`: 指定された数の日を減算する日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算する日の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` から `num` 日を減算します。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractDays(date, 31) AS subtract_days_with_date, subtractDays(date_time, 31) AS subtract_days_with_date_time, subtractDays(date_time_string, 31) AS subtract_days_with_date_time_string ``` ```response ┌─subtract_days_with_date─┬─subtract_days_with_date_time─┬─subtract_days_with_date_time_string─┐ │ 2023-12-01 │ 2023-12-01 00:00:00 │ 2023-12-01 00:00:00.000 │ └─────────────────────────┴──────────────────────────────┴─────────────────────────────────────┘ ``` ## subtractHours 指定された数の時間を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付から減算します。 **構文** ```sql subtractHours(date, num) ``` **パラメーター** - `date`: 指定された数の時間を減算する日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[Datetime](../data-types/datetime.md)/[Datetime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算する時間の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` から `num` 時間を減算します。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[Datetime](../data-types/datetime.md)/[Datetime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractHours(date, 12) AS subtract_hours_with_date, subtractHours(date_time, 12) AS subtract_hours_with_date_time, subtractHours(date_time_string, 12) AS subtract_hours_with_date_time_string ``` ```response ┌─subtract_hours_with_date─┬─subtract_hours_with_date_time─┬─subtract_hours_with_date_time_string─┐ │ 2023-12-31 12:00:00 │ 2023-12-31 12:00:00 │ 2023-12-31 12:00:00.000 │ └──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘ ``` ## subtractMinutes 指定された数の分を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付から減算します。 **構文** ```sql subtractMinutes(date, num) ``` **パラメーター** - `date`: 指定された数の分を減算する日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算する分の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` から `num` 分を減算します。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractMinutes(date, 30) AS subtract_minutes_with_date, subtractMinutes(date_time, 30) AS subtract_minutes_with_date_time, subtractMinutes(date_time_string, 30) AS subtract_minutes_with_date_time_string ``` ```response ┌─subtract_minutes_with_date─┬─subtract_minutes_with_date_time─┬─subtract_minutes_with_date_time_string─┐ │ 2023-12-31 23:30:00 │ 2023-12-31 23:30:00 │ 2023-12-31 23:30:00.000 │ └────────────────────────────┴─────────────────────────────────┴────────────────────────────────────────┘ ``` ## subtractSeconds 指定された数の秒を日付、時刻付きの日付、または文字列エンコードされた日付 / 時刻付きの日付から減算します。 **構文** ```sql subtractSeconds(date, num) ``` **パラメーター** - `date`: 指定された数の秒を減算する日付 / 時刻付き日付。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算する秒の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date` から `num` 秒を減算します。 [Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDate('2024-01-01') AS date, toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractSeconds(date, 60) AS subtract_seconds_with_date, subtractSeconds(date_time, 60) AS subtract_seconds_with_date_time, subtractSeconds(date_time_string, 60) AS subtract_seconds_with_date_time_string ``` ```response ┌─subtract_seconds_with_date─┬─subtract_seconds_with_date_time─┬─subtract_seconds_with_date_time_string─┐ │ 2023-12-31 23:59:00 │ 2023-12-31 23:59:00 │ 2023-12-31 23:59:00.000 │ └────────────────────────────┴─────────────────────────────────┴────────────────────────────────────────┘ ``` ## subtractMilliseconds 指定された数のミリ秒を時刻付きの日付または文字列エンコードされた時刻付きの日付から減算します。 **構文** ```sql subtractMilliseconds(date_time, num) ``` **パラメーター** - `date_time`: 指定された数のミリ秒を減算する時刻付き日付。 [DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 減算するミリ秒の数。 [(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返却値** - `date_time` から `num` ミリ秒を減算します。 [DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractMilliseconds(date_time, 1000) AS subtract_milliseconds_with_date_time, subtractMilliseconds(date_time_string, 1000) AS subtract_milliseconds_with_date_time_string ``` ```response ┌─subtract_milliseconds_with_date_time─┬─subtract_milliseconds_with_date_time_string─┐ │ 2023-12-31 23:59:59.000 │ 2023-12-31 23:59:59.000 │ └──────────────────────────────────────┴─────────────────────────────────────────────┘ ``` - `num`: 引き算するマイクロ秒の数。[(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返される値** - `date_time` から `num` マイクロ秒を引いた結果を返します。 [DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractMicroseconds(date_time, 1000000) AS subtract_microseconds_with_date_time, subtractMicroseconds(date_time_string, 1000000) AS subtract_microseconds_with_date_time_string ``` ```response ┌─subtract_microseconds_with_date_time─┬─subtract_microseconds_with_date_time_string─┐ │ 2023-12-31 23:59:59.000000 │ 2023-12-31 23:59:59.000000 │ └──────────────────────────────────────┴─────────────────────────────────────────────┘ ``` ## subtractNanoseconds 指定したナノ秒数を日付と時刻、または文字列で表現された日付と時刻から引き算します。 **構文** ```sql subtractNanoseconds(date_time, num) ``` **パラメータ** - `date_time`: ナノ秒数を引き算する対象の日付と時刻。[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)、[String](../data-types/string.md)。 - `num`: 引き算するナノ秒の数。[(U)Int*](../data-types/int-uint.md)、[Float*](../data-types/float.md)。 **返される値** - `date_time` から `num` ナノ秒を引いた結果を返します。 [DateTime64](../data-types/datetime64.md)。 **例** ```sql WITH toDateTime('2024-01-01 00:00:00') AS date_time, '2024-01-01 00:00:00' AS date_time_string SELECT subtractNanoseconds(date_time, 1000) AS subtract_nanoseconds_with_date_time, subtractNanoseconds(date_time_string, 1000) AS subtract_nanoseconds_with_date_time_string ``` ```response ┌─subtract_nanoseconds_with_date_time─┬─subtract_nanoseconds_with_date_time_string─┐ │ 2023-12-31 23:59:59.999999000 │ 2023-12-31 23:59:59.999999000 │ └─────────────────────────────────────┴────────────────────────────────────────────┘ ``` ## subtractInterval 別の間隔や間隔のタプルに対して、ネガティブな間隔を追加します。 **構文** ```sql subtractInterval(interval_1, interval_2) ``` **パラメータ** - `interval_1`: 最初の間隔またはタプルの間隔。[interval](../data-types/special-data-types/interval.md)、[tuple](../data-types/tuple.md)([interval](../data-types/special-data-types/interval.md))。 - `interval_2`: ネガティブにする第2の間隔。[interval](../data-types/special-data-types/interval.md)。 **返される値** - 間隔のタプルを返します。[tuple](../data-types/tuple.md)([interval](../data-types/special-data-types/interval.md))。 :::note 同じタイプの間隔は、単一の間隔に結合されます。たとえば、 `toIntervalDay(2)` と `toIntervalDay(1)` が渡された場合、結果は `(1)` になります。 ::: **例** クエリ: ```sql SELECT subtractInterval(INTERVAL 1 DAY, INTERVAL 1 MONTH); SELECT subtractInterval((INTERVAL 1 DAY, INTERVAL 1 YEAR), INTERVAL 1 MONTH); SELECT subtractInterval(INTERVAL 2 DAY, INTERVAL 1 DAY); ``` 結果: ```response ┌─subtractInterval(toIntervalDay(1), toIntervalMonth(1))─┐ │ (1,-1) │ └────────────────────────────────────────────────────────┘ ┌─subtractInterval((toIntervalDay(1), toIntervalYear(1)), toIntervalMonth(1))─┐ │ (1,1,-1) │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─subtractInterval(toIntervalDay(2), toIntervalDay(1))─┐ │ (1) │ └──────────────────────────────────────────────────────┘ ``` ## subtractTupleOfIntervals 日付または日付時刻からタプルの間隔を順次引き算します。 **構文** ```sql subtractTupleOfIntervals(interval_1, interval_2) ``` **パラメータ** - `date`: 最初の間隔またはタプルの間隔。[Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 - `intervals`: `date` から引く間隔のタプル。[tuple](../data-types/tuple.md)([interval](../data-types/special-data-types/interval.md))。 **返される値** - 引かれた `intervals` を持つ `date` を返します。[Date](../data-types/date.md)/[Date32](../data-types/date32.md)/[DateTime](../data-types/datetime.md)/[DateTime64](../data-types/datetime64.md)。 **例** クエリ: ```sql WITH toDate('2018-01-01') AS date SELECT subtractTupleOfIntervals(date, (INTERVAL 1 DAY, INTERVAL 1 YEAR)) ``` 結果: ```response ┌─subtractTupleOfIntervals(date, (toIntervalDay(1), toIntervalYear(1)))─┐ │ 2016-12-31 │ └───────────────────────────────────────────────────────────────────────┘ ``` ## timeSlots ‘StartTime’ から始まり ‘Duration’ 秒続く時間間隔において、この間隔内の時間の瞬間を、’Size’ 秒単位に切り捨てた点の配列を返します。’Size’ はオプションのパラメータで、デフォルトは 1800(30分)です。 これは、対応するセッション内のページビューを検索する際に必要です。 ‘StartTime’ 引数には DateTime および DateTime64 を受け付けます。DateTime では、’Duration’ と ’Size’ 引数は `UInt32` でなければなりません。’DateTime64’ では、これらは `Decimal64` でなければなりません。 DateTime/DateTime64 の配列を返します(戻り値の型は ’StartTime’ の型に一致します)。DateTime64 の場合、戻り値のスケールは ’StartTime’ のスケールと異なる場合があります --- すべての指定された引数の中で最も高いスケールが適用されます。 **構文** ```sql timeSlots(StartTime, Duration,\[, Size\]) ``` **例** ```sql SELECT timeSlots(toDateTime('2012-01-01 12:20:00'), toUInt32(600)); SELECT timeSlots(toDateTime('1980-12-12 21:01:02', 'UTC'), toUInt32(600), 299); SELECT timeSlots(toDateTime64('1980-12-12 21:01:02.1234', 4, 'UTC'), toDecimal64(600.1, 1), toDecimal64(299, 0)); ``` 結果: ``` text ┌─timeSlots(toDateTime('2012-01-01 12:20:00'), toUInt32(600))─┐ │ ['2012-01-01 12:00:00','2012-01-01 12:30:00'] │ └─────────────────────────────────────────────────────────────┘ ┌─timeSlots(toDateTime('1980-12-12 21:01:02', 'UTC'), toUInt32(600), 299)─┐ │ ['1980-12-12 20:56:13','1980-12-12 21:01:12','1980-12-12 21:06:11'] │ └─────────────────────────────────────────────────────────────────────────┘ ┌─timeSlots(toDateTime64('1980-12-12 21:01:02.1234', 4, 'UTC'), toDecimal64(600.1, 1), toDecimal64(299, 0))─┐ │ ['1980-12-12 20:56:13.0000','1980-12-12 21:01:12.0000','1980-12-12 21:06:11.0000'] │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` ## formatDateTime 指定された形式の文字列に従って時刻をフォーマットします。形式は定数式なので、単一の結果列に対して複数の形式を使用することはできません。 formatDateTime は MySQL の日付と時刻のフォーマットスタイルを使用します。詳細は https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format を参照してください。 この関数の逆操作は [parseDateTime](../functions/type-conversion-functions.md#type_conversion_functions-parseDateTime) です。 エイリアス: `DATE_FORMAT`。 **構文** ``` sql formatDateTime(Time, Format[, Timezone]) ``` **返される値** 指定された形式に従い、日時の値を返します。 **置換フィールド** 置換フィールドを使用して、結果の文字列のパターンを定義できます。“例” 列は `2018-01-02 22:33:44` に対するフォーマッティング結果を示しています。 | プレースホルダー | 説明 | 例 | |----------|-------------------------------------------------|------------| | %a | 短縮形の曜日名 (月-日) | Mon | | %b | 短縮形の月名 (1月-12月) | Jan | | %c | 月を整数番号 (01-12) で表す。’ノート3’を参照 | 01 | | %C | 100年で割った後、整数に切り捨て(00-99) | 20 | | %d | 月の日を0詰め(01-31) | 02 | | %D | 短縮形のMM/DD/YYの日付(%m/%d/%yと同等) | 01/02/18 | | %e | 月の日を空白詰め(1-31) |   2 | | %f | 小数点以下の秒、’ノート1’を参照 | 1234560 | | %F | 短縮形のYYYY-MM-DDの日付(%Y-%m-%dと同等) | 2018-01-02 | | %g | ISO 8601に整列した2桁の年形式、4桁の表記から短縮化 | 18 | | %G | ISO 週番号用の4桁の年形式、週ベースの年から計算 | 2018 | | %h | 12時間形式の時(01-12) | 09 | | %H | 24時間形式の時(00-23) | 22 | | %i | 分(00-59) | 33 | | %I | 12時間形式の時(01-12) | 10 | | %j | 年の日(001-366) | 002 | | %k | 24時間形式の時(00-23)、’ノート3’を参照 | 14 | | %l | 12時間形式の時(01-12)、’ノート3’を参照 | 09 | | %m | 月を整数番号 (01-12) で表す | 01 | | %M | 完全な月名 (1月-12月)、’ノート2’を参照 | January | | %n | 改行文字 (‘’) | | | %p | AM または PM の指定 | PM | | %Q | 四半期(1-4) | 1 | | %r | 12時間HH:MM AM/PM形式、%h:%i %pと同等 | 10:30 PM | | %R | 24時間HH:MM形式、%H:%iと同等 | 22:33 | | %s | 秒(00-59) | 44 | | %S | 秒(00-59) | 44 | | %t | 横タブ文字(’) | | | %T | ISO 8601形式の時刻 (HH:MM:SS)、%H:%i:%Sと同等 | 22:33:44 | | %u | 月曜日を1とするISO 8601の曜日番号(1-7) | 2 | | %V | ISO 8601週番号(01-53) | 01 | | %w | 日曜日を0とする整数形式の曜日(0-6) | 2 | | %W | 完全な曜日名(月曜日-日曜日) | Monday | | %y | 年の最終2桁(00-99) | 18 | | %Y | 年 | 2018 | | %z | UTCとの時間オフセットを+HHMMまたは-HHMM形式で表示 | -0500 | | %% | % 記号 | % | ノート1: ClickHouse のバージョンが v23.4 より以前のものである場合、`%f` は日付、Date32、または日付時刻(これらは小数点以下の秒を持たない)や DateTime64 の精度が 0 の場合、単一のゼロ (0) を印刷します。以前の動作は、設定 `formatdatetime_f_prints_single_zero = 1` を使用することで復元できます。 ノート2: ClickHouse のバージョンが v23.4 より以前のものである場合、`%M` は完全な月名(1月-12月)ではなく、分を印刷します(00-59)。以前の動作は、設定 `formatdatetime_parsedatetime_m_is_month_name = 0` を使用することで復元できます。 ノート3: ClickHouse のバージョンが v23.11 より以前のものである場合、関数 `parseDateTime()` はフォーマッタ `%c`(月)および `%l` / `%k`(時)に先頭のゼロを必要としていました。例: `07`。後のバージョンでは、先頭のゼロは省略できます、例: `7`。以前の動作は、設定 `parsedatetime_parse_without_leading_zeros = 0` を使用することで復元できます。関数 `formatDateTime()` はデフォルトでは依然として `%c` および `%l` / `%k` に先頭のゼロを印刷し、既存の使用例を壊さないようにします。この動作は、設定 `formatdatetime_format_without_leading_zeros = 1` によって変更できます。 **例** ``` sql SELECT formatDateTime(toDate('2010-01-04'), '%g') ``` 結果: ``` ┌─formatDateTime(toDate('2010-01-04'), '%g')─┐ │ 10 │ └────────────────────────────────────────────┘ ``` ``` sql SELECT formatDateTime(toDateTime64('2010-01-04 12:34:56.123456', 7), '%f') ``` 結果: ``` ┌─formatDateTime(toDateTime64('2010-01-04 12:34:56.123456', 7), '%f')─┐ │ 1234560 │ └─────────────────────────────────────────────────────────────────────┘ ``` さらに、`formatDateTime` 関数は、タイムゾーンの名前を含む第3の文字列引数を取ることができます。例: `Asia/Istanbul`。この場合、指定されたタイムゾーンに従って時刻がフォーマットされます。 **例** ```sql SELECT now() AS ts, time_zone, formatDateTime(ts, '%T', time_zone) AS str_tz_time FROM system.time_zones WHERE time_zone LIKE 'Europe%' LIMIT 10 ┌──────────────────ts─┬─time_zone─────────┬─str_tz_time─┐ │ 2023-09-08 19:13:40 │ Europe/Amsterdam │ 21:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Andorra │ 21:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Astrakhan │ 23:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Athens │ 22:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Belfast │ 20:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Belgrade │ 21:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Berlin │ 21:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Bratislava │ 21:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Brussels │ 21:13:40 │ │ 2023-09-08 19:13:40 │ Europe/Bucharest │ 22:13:40 │ └─────────────────────┴───────────────────┴─────────────┘ ``` **関連情報** - [formatDateTimeInJodaSyntax](#formatdatetimeinjodasyntax) ## formatDateTimeInJodaSyntax formatDateTime と似ていますが、MySQL スタイルの代わりに Joda スタイルで日付時刻をフォーマットします。詳細は https://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html を参照してください。 この関数の逆操作は [parseDateTimeInJodaSyntax](../functions/type-conversion-functions.md#type_conversion_functions-parseDateTimeInJodaSyntax) です。 **置換フィールド** 置換フィールドを使用して、結果の文字列のパターンを定義できます。 | プレースホルダー | 説明 | プレゼンテーション | 例 | | ----------- | ---------------------------------- | ------------- | ------------------------------ | | G | 年代 | テキスト | AD | | C | 年代の世紀 (>=0) | 数字 | 20 | | Y | 年代の年 (>=0) | 年 | 1996 | | x | 週年(未対応) | 年 | 1996 | | w | 週年の週(未対応) | 数字 | 27 | | e | 曜日 | 数字 | 2 | | E | 曜日 | テキスト | Tuesday; Tue | | y | 年 | 年 | 1996 | | D | 年の日 | 数字 | 189 | | M | 年の月 | 月 | July; Jul; 07 | | d | 月の日 | 数字 | 10 | | a | 日の半分 | テキスト | PM | | K | 半日の時刻 (0〜11) | 数字 | 0 | | h | 半日の時刻 (1〜12) | 数字 | 12 | | H | 一日の時刻 (0〜23) | 数字 | 0 | | k | 一日の時刻 (1〜24) | 数字 | 24 | | m | 時間の分 | 数字 | 30 | | s | 分の秒 | 数字 | 55 | | S | 秒の小数点以下(未対応) | 数字 | 978 | | z | タイムゾーン(短縮名は未対応) | テキスト | 太平洋標準時; PST | | Z | タイムゾーンオフセット/ID(未対応) | ゾーン | -0800; -08:00; America/Los_Angeles | | ' | テキストのエスケープ | 区切り | | | '' | 単一引用符 | リテラル | ' | **例** ``` sql SELECT formatDateTimeInJodaSyntax(toDateTime('2010-01-04 12:34:56'), 'yyyy-MM-dd HH:mm:ss') ``` 結果: ``` ┌─formatDateTimeInJodaSyntax(toDateTime('2010-01-04 12:34:56'), 'yyyy-MM-dd HH:mm:ss')─┐ │ 2010-01-04 12:34:56 │ └─────────────────────────────────────────────────────────────────────────────────────────┘ ``` ## dateName 指定された日付の部分を返します。 **構文** ``` sql dateName(date_part, date) ``` **引数** - `date_part` — 日付の部分。可能な値: 'year', 'quarter', 'month', 'week', 'dayofyear', 'day', 'weekday', 'hour', 'minute', 'second'。[String](../data-types/string.md)。 - `date` — 日付。[Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 - `timezone` — タイムゾーン。オプション。[String](../data-types/string.md)。 **返される値** - 指定された日付の部分。[String](../data-types/string.md#string) **例** ```sql WITH toDateTime('2021-04-14 11:22:33') AS date_value SELECT dateName('year', date_value), dateName('month', date_value), dateName('day', date_value); ``` 結果: ```text ┌─dateName('year', date_value)─┬─dateName('month', date_value)─┬─dateName('day', date_value)─┐ │ 2021 │ April │ 14 │ └──────────────────────────────┴───────────────────────────────┴─────────────────────────────┘ ``` ## monthName 月の名前を返します。 **構文** ``` sql monthName(date) ``` **引数** - `date` — 日付または時刻付きの日付。[Date](../data-types/date.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md)。 **返される値** - 月の名前。[String](../data-types/string.md#string) **例** ```sql WITH toDateTime('2021-04-14 11:22:33') AS date_value SELECT monthName(date_value); ``` 結果: ```text ┌─monthName(date_value)─┐ │ April │ └───────────────────────┘ ``` ## fromUnixTimestamp この関数はUnixタイムスタンプをカレンダー日付と一日中の時間に変換します。 二つの方法で呼び出すことができます: 単一の引数として [Integer](../data-types/int-uint.md) 型を渡すと、[DateTime](../data-types/datetime.md) 型の値を返します。すなわち、[toDateTime](../../sql-reference/functions/type-conversion-functions.md#todatetime) のように振舞います。 エイリアス: `FROM_UNIXTIME`。 **例:** ```sql SELECT fromUnixTimestamp(423543535); ``` 結果: ```text ┌─fromUnixTimestamp(423543535)─┐ │ 1983-06-04 10:58:55 │ └──────────────────────────────┘ ``` 二つまたは三つの引数を与え、最初の引数に [Integer](../data-types/int-uint.md)、[Date](../data-types/date.md)、[Date32](../data-types/date32.md)、[DateTime](../data-types/datetime.md) または [DateTime64](../data-types/datetime64.md) の値を渡すと、第二の引数が定数形式の文字列、第三の引数がオプションの定数タイムゾーンの文字列になる場合、この関数は[String](../data-types/string.md#string) 型の値を返します。すなわち、[formatDateTime](#formatdatetime) のように振舞います。この場合、[MySQL の日付と時刻のフォーマットスタイル](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format) が使用されます。 **例:** ```sql SELECT fromUnixTimestamp(1234334543, '%Y-%m-%d %R:%S') AS DateTime; ``` 結果: ```text ┌─DateTime────────────┐ │ 2009-02-11 14:42:23 │ └─────────────────────┘ ``` **関連情報** - [fromUnixTimestampInJodaSyntax](#fromunixtimestampinjodasyntax) ## fromUnixTimestampInJodaSyntax [fromUnixTimestamp](#fromunixtimestamp)と同様ですが、二つまたは三つの引数で呼び出す際には、日付フォーマットが[MySQLスタイル](https://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html)ではなくJodaスタイルで実行されます。 **例:** ``` sql SELECT fromUnixTimestampInJodaSyntax(1234334543, 'yyyy-MM-dd HH:mm:ss', 'UTC') AS DateTime; ``` 結果: ``` ┌─DateTime────────────┐ │ 2009-02-11 06:42:23 │ └─────────────────────┘ ``` ## toModifiedJulianDay [プロレプティックグレゴリオ暦](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar)の日付をテキスト形式 `YYYY-MM-DD`から[修正ユリウス日](https://en.wikipedia.org/wiki/Julian_day#Variants)番号に変換します。この関数は `0000-01-01` から `9999-12-31` までの日付をサポートします。引数が日付として解析できない場合や無効な日付の場合は例外を発生させます。 **構文** ``` sql toModifiedJulianDay(date) ``` **引数** - `date` — テキスト形式の日付。[String](../data-types/string.md) または [FixedString](../data-types/fixedstring.md)。 **返される値** - 修正ユリウス日番号。[Int32](../data-types/int-uint.md)。 **例** ``` sql SELECT toModifiedJulianDay('2020-01-01'); ``` 結果: ``` text ┌─toModifiedJulianDay('2020-01-01')─┐ │ 58849 │ └───────────────────────────────────┘ ``` ## toModifiedJulianDayOrNull [toModifiedJulianDay()](#tomodifiedjulianday) よりも似ていますが、例外を発生させる代わりに `NULL` を返します。 **構文** ``` sql toModifiedJulianDayOrNull(date) ``` **引数** - `date` — テキスト形式の日付。[String](../data-types/string.md) または [FixedString](../data-types/fixedstring.md)。 **返される値** - 修正ユリウス日番号。[Nullable(Int32)](../data-types/int-uint.md)。 **例** ``` sql SELECT toModifiedJulianDayOrNull('2020-01-01'); ``` 結果: ``` text ┌─toModifiedJulianDayOrNull('2020-01-01')─┐ │ 58849 │ └─────────────────────────────────────────┘ ``` ## fromModifiedJulianDay 修正ユリウス日番号を[プロレプティックグレゴリオ暦](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar)の日付形式 `YYYY-MM-DD` に変換します。この関数は、`-678941` から `2973483` までの整数をサポートします(これにより `0000-01-01` と `9999-12-31` を表します)。日数がサポートされた範囲外の場合は例外を発生させます。 **構文** ``` sql fromModifiedJulianDay(day) ``` **引数** - `day` — 修正ユリウス日番号。[任意の整数型](../data-types/int-uint.md)。 **返される値** - テキスト形式の日付。[String](../data-types/string.md) **例** ``` sql SELECT fromModifiedJulianDay(58849); ``` 結果: ``` text ┌─fromModifiedJulianDay(58849)─┐ │ 2020-01-01 │ └──────────────────────────────┘ ``` ## fromModifiedJulianDayOrNull [fromModifiedJulianDayOrNull()](#frommodifiedjuliandayornull) と似ていますが、例外を発生させる代わりに `NULL` を返します。 **構文** ``` sql fromModifiedJulianDayOrNull(day) ``` **引数** - `day` — 修正ユリウス日番号。[任意の整数型](../data-types/int-uint.md)。 **返される値** - テキスト形式の日付。[Nullable(String)](../data-types/string.md) **例** ``` sql SELECT fromModifiedJulianDayOrNull(58849); ``` 結果: ``` text ┌─fromModifiedJulianDayOrNull(58849)─┐ │ 2020-01-01 │ └────────────────────────────────────┘ ``` ## toUTCTimestamp 他のタイムゾーンからUTCタイムスタンプにDateTime/DateTime64型の値を変換します。 **構文** ``` sql toUTCTimestamp(time_val, time_zone) ``` **引数** - `time_val` — DateTime/DateTime64型の定数値または式。[DateTime/DateTime64型](../data-types/datetime.md) - `time_zone` — タイムゾーンを表す定数の文字列値または式。[String型](../data-types/string.md) **返される値** - テキスト形式のDateTime/DateTime64 **例** ``` sql SELECT toUTCTimestamp(toDateTime('2023-03-16'), 'Asia/Shanghai'); ``` 結果: ``` text ┌─toUTCTimestamp(toDateTime('2023-03-16'),'Asia/Shanghai')┐ │ 2023-03-15 16:00:00 │ └─────────────────────────────────────────────────────────┘ ``` ## fromUTCTimestamp UTCタイムゾーンから他のタイムゾーンのタイムスタンプにDateTime/DateTime64型の値を変換します。 **構文** ``` sql fromUTCTimestamp(time_val, time_zone) ``` **引数** - `time_val` — DateTime/DateTime64型の定数値または式。[DateTime/DateTime64型](../data-types/datetime.md) - `time_zone` — タイムゾーンを表す定数の文字列値または式。[String型](../data-types/string.md) **返される値** - テキスト形式のDateTime/DateTime64 **例** ``` sql SELECT fromUTCTimestamp(toDateTime64('2023-03-16 10:00:00', 3), 'Asia/Shanghai'); ``` 結果: ``` text ┌─fromUTCTimestamp(toDateTime64('2023-03-16 10:00:00',3),'Asia/Shanghai')─┐ │ 2023-03-16 18:00:00.000 │ └─────────────────────────────────────────────────────────────────────────┘ ``` ## UTCTimestamp クエリ分析の瞬間における現在の日付と時刻を返します。この関数は定数式です。 :::note この関数は `now('UTC')` と同じ結果を返します。MySQLサポートのために追加されたものであり、[`now`](#now) が推奨される使用法です。 ::: **構文** ```sql UTCTimestamp() ``` エイリアス: `UTC_timestamp`。 **返される値** - クエリ分析の瞬間における現在の日付と時刻を返します。[DateTime](../data-types/datetime.md)。 **例** クエリ: ```sql SELECT UTCTimestamp(); ``` 結果: ```response ┌──────UTCTimestamp()─┐ │ 2024-05-28 08:32:09 │ └─────────────────────┘ ``` ## timeDiff 二つの日付または日付時刻値の差を返します。差は秒単位で計算されます。これは `dateDiff` と同じであり、MySQLサポートのために追加されました。`dateDiff` が推奨されます。 **構文** ```sql timeDiff(first_datetime, second_datetime) ``` **引数** - `first_datetime` — DateTime/DateTime64型の定数値または式。[DateTime/DateTime64型](../data-types/datetime.md) - `second_datetime` — DateTime/DateTime64型の定数値または式。[DateTime/DateTime64型](../data-types/datetime.md) **返される値** 二つの日付または日付時刻の値の秒数の差。 **例** クエリ: ```sql timeDiff(toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02')); ``` **結果**: ```response ┌─timeDiff(toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'))─┐ │ 86400 │ └──────────────────────────────────────────────────────────────────────────┘ ``` ## 関連コンテンツ - ブログ: [ClickHouseでの時系列データの操作](https://clickhouse.com/blog/working-with-time-series-data-and-functions-ClickHouse)