# 日付/時刻関数

# timezone

現在のセッションのタイムゾーンを返します。セッションのタイムゾーン設定(session_timezone)の値を返します。この関数は、分散テーブルのコンテキストで実行される場合、各シャードに関連する値を持つ通常の列を生成します。それ以外の場合は、定数値を生成します。

timeZone()

別名

   `timezone`。

返される値

  • タイムゾーン。
  • 型: 文字列。

SELECT timezone()
┌─timezone()─────┐
│ America/Denver │
└────────────────┘

# makeDate

年、月、日の引数から日付を作成します。

makeDate(year, month, day);

別名

MAKEDATE(year, month, day);

引数

  • year — 年。整数、浮動小数点数、または10進数。
  • month — 月。整数、浮動小数点数、または10進数。
  • day — 日。整数、浮動小数点数、または10進数。

返される値

  • 引数から作成された日付。
  • 型: 日付。

SELECT makeDate(2023, 2, 28) AS Date;
┌───────date─┐
│ 2023-02-28 │
└────────────┘

# makeDateTime

年、月、日、時、分、秒の引数からDateTimeを作成します。

makeDateTime(year, month, day, hour, minute, second[, timezone])

引数

  • year — 年。整数、浮動小数点数、または10進数。
  • month — 月。整数、浮動小数点数、または10進数。
  • day — 日。整数、浮動小数点数、または10進数。
  • hour — 時。整数、浮動小数点数、または10進数。
  • minute — 分。整数、浮動小数点数、または10進数。
  • second — 秒。整数、浮動小数点数、または10進数。
  • timezone — 返される値のタイムゾーン(オプション)。

返される値

  • 引数から作成された日時。
  • 型: DateTime。

SELECT makeDateTime(2023, 2, 28, 17, 12, 33) AS DateTime;
┌────────────DateTime─┐
│ 2023-02-28 17:12:33 │
└─────────────────────┘

# toTimeZone

指定されたタイムゾーンに日付または日付と時刻を変換します。データの内部値(UNIX秒数)は変更せず、値のタイムゾーン属性と値の文字列表現のみが変更されます。

toTimezone(value, timezone)

別名

toTimezone

引数

  • value — 時刻または日付と時刻。DateTime64。
  • timezone — 返される値のタイムゾーン。文字列。この引数は定数です。なぜなら、toTimezoneは列のタイムゾーンを変更するからです(タイムゾーンはDateTime*型の属性です)。

返される値

  • 日付と時刻。
  • 型: DateTime。

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;
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

# toUnixTimestamp

文字列、日付、または日付と時刻をUnixタイムスタンプ(UInt32表現)に変換します。関数が文字列で呼び出される場合、オプションのタイムゾーン引数を受け入れます。

toUnixTimestamp(date);toUnixTimestamp(str, [timezone])

返される値

  • Unixタイムスタンプを返します。
  • 型: UInt32

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 FORMAT Vertical;
Row 1:
──────
dt_str:          2017-11-05 08:07:47
from_str:        1509840467
from_str_tokyo:  1509836867
from_datetime:   1509840467
from_datetime64: 1509840467
Last Updated: Fri Nov 01 2024 09:02:06 GMT+0000