# Funciones de fecha/hora

# timezone

Devuelve la zona horaria de la sesión actual, es decir, el valor de la configuración session_timezone. Si la función se ejecuta en el contexto de una tabla distribuida, genera una columna normal con valores relevantes para cada fragmento, de lo contrario produce un valor constante.

timeZone()

Alias

   `timezone`.

Valor devuelto

  • Zona horaria.
  • Tipo: Cadena de caracteres.

Ejemplo

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

# makeDate

Crea una fecha a partir de los argumentos año, mes y día.

makeDate(año, mes, día);

Alias

MAKEDATE(año, mes, día);

Argumentos

  • año — Año. Entero, flotante o decimal.
  • mes — Mes. Entero, flotante o decimal.
  • día — Día. Entero, flotante o decimal.

Valor devuelto

  • Una fecha creada a partir de los argumentos.
  • Tipo: Fecha.

Ejemplo

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

# makeDateTime

Crea una fecha y hora a partir de los argumentos año, mes, día, hora, minuto y segundo.

makeDateTime(año, mes, día, hora, minuto, segundo[, zona_horaria])

Argumentos

  • año — Año. Entero, flotante o decimal.
  • mes — Mes. Entero, flotante o decimal.
  • día — Día. Entero, flotante o decimal.
  • hora — Hora. Entero, flotante o decimal.
  • minuto — Minuto. Entero, flotante o decimal.
  • segundo — Segundo. Entero, flotante o decimal.
  • zona_horaria — Zona horaria para el valor devuelto (opcional).

Valor devuelto

  • Una fecha con hora creada a partir de los argumentos.
  • Tipo: Fecha y hora.

Ejemplo

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

# toTimeZone

Convierte una fecha o una fecha con hora a la zona horaria especificada. No cambia el valor interno (número de segundos Unix) de los datos, solo cambia el atributo de zona horaria del valor y la representación en cadena del valor.

toTimezone(valor, zona_horaria)

Alias

toTimezone.

Argumentos

  • valor — Hora o fecha y hora. DateTime64.
  • zona_horaria — Zona horaria para el valor devuelto. Cadena de caracteres. Este argumento es constante, porque toTimezone cambia la zona horaria de una columna (la zona horaria es un atributo de los tipos DateTime*).

Valor devuelto

  • Fecha y hora.
  • Tipo: Fecha y hora.

Ejemplo

SELECT toDateTime('2019-01-01 00:00:00', 'UTC') AS hora_utc, 
       toTypeName(hora_utc) AS tipo_utc, toInt32(hora_utc) AS int32utc, 
       toTimeZone(hora_utc, 'Asia/Yekaterinburg') AS hora_yekat, 
       toTypeName(hora_yekat) AS tipo_yekat, toInt32(hora_yekat) AS int32yekat, 
       toTimeZone(hora_utc, 'US/Samoa') AS hora_samoa, 
       toTypeName(hora_samoa) AS tipo_samoa, 
       toInt32(hora_samoa) AS int32samoa FORMAT Vertical;
Fila 1:
──────
hora_utc:   2019-01-01 00:00:00
tipo_utc:   DateTime('UTC')
int32utc:   1546300800
hora_yekat: 2019-01-01 05:00:00
tipo_yekat: DateTime('Asia/Yekaterinburg')
int32yekat: 1546300800
hora_samoa: 2018-12-31 13:00:00
tipo_samoa: DateTime('US/Samoa')
int32samoa: 1546300800

# toUnixTimestamp

Convierte una cadena, una fecha o una fecha con hora en el Timestamp de Unix en representación UInt32. Si se llama a la función con una cadena, acepta un argumento de zona horaria opcional.

toUnixTimestamp(fecha);toUnixTimestamp(cadena, [zona_horaria])

Valor devuelto

  • Devuelve el timestamp de Unix.
  • Tipo: UInt32.

Ejemplo

SELECT '2017-11-05 08:07:47' AS cadena_fecha, toUnixTimestamp(cadena_fecha) AS desde_cadena, 
       toUnixTimestamp(cadena_fecha, 'Asia/Tokyo') AS desde_cadena_tokyo, 
       toUnixTimestamp(toDateTime(cadena_fecha)) AS desde_fecha_hora, 
       toUnixTimestamp(toDateTime64(cadena_fecha, 0)) AS desde_fecha_hora64 FORMAT Vertical;
Fila 1:
──────
cadena_fecha:          2017-11-05 08:07:47
desde_cadena:        1509840467
desde_cadena_tokyo:  1509836867
desde_fecha_hora:   1509840467
desde_fecha_hora64: 1509840467