# 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, porquetoTimezone
cambia la zona horaria de una columna (la zona horaria es un atributo de los tiposDateTime*
).
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