# 日付/時刻関数
# 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