Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funciones para trabajar con fechas y horas

La mayoría de las funciones de esta sección aceptan un argumento opcional de zona horaria, por ejemplo, Europe/Amsterdam. En este caso, se usa la zona horaria especificada en lugar de la local (predeterminada).

Ejemplo

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
┌────────────────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 │
└─────────────────────┴────────────┴────────────┴─────────────────────┘
[object Object]

UTCTimestamp

Introducido en: v22.11.0

Devuelve la fecha y hora actuales en el momento del análisis de la consulta. La función es una expresión constante.

Esta función da el mismo resultado que now('UTC'). Se añadió únicamente por compatibilidad con MySQL. Se recomienda usar now.

Sintaxis

UTCTimestamp()

Alias: UTC_timestamp

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la fecha y hora actuales en el momento del análisis de la consulta. DateTime

Ejemplos

Obtener la marca de tiempo UTC actual

SELECT UTCTimestamp()
┌──────UTCTimestamp()─┐
│ 2024-05-28 08:32:09 │
└─────────────────────┘

YYYYMMDDToDate

Introducido en: v23.9.0

Convierte un número que contiene el año, el mes y el día en un Date. Esta función es la opuesta de la función toYYYYMMDD(). El resultado no está definido si la entrada no codifica un valor Date válido.

Sintaxis

YYYYMMDDToDate(YYYYMMDD)

Argumentos

Valor devuelto

Devuelve un valor de tipo Date a partir de los argumentos proporcionados Date

Ejemplos

Ejemplo

SELECT YYYYMMDDToDate(20230911);
┌─YYYYMMDDToDate(20230911)─┐
│               2023-09-11 │
└──────────────────────────┘

YYYYMMDDToDate32

Introducido en: v23.9.0

Convierte un número que contiene el año, el mes y el día en un Date32. Esta función es la opuesta de la función toYYYYMMDD(). La salida no está definida si la entrada no codifica un valor Date32 válido.

Sintaxis

YYYYMMDDToDate32(YYYYMMDD)

Argumentos

Valor devuelto

Devuelve un valor Date32 a partir de los argumentos proporcionados Date32

Ejemplos

Ejemplo

SELECT YYYYMMDDToDate32(20000507);
┌─YYYYMMDDToDate32(20000507)─┐
│                 2000-05-07 │
└────────────────────────────┘

YYYYMMDDhhmmssToDateTime

Introducido en: v23.9.0

Convierte un número que contiene el año, el mes, el día, la hora, el minuto y el segundo en un DateTime. Esta función es la opuesta de la función toYYYYMMDDhhmmss(). La salida no está definida si la entrada no codifica un valor DateTime válido.

Sintaxis

YYYYMMDDhhmmssToDateTime(YYYYMMDDhhmmss[, timezone])

Argumentos

  • YYYYMMDDhhmmss — Número que contiene el año, mes, día, hora, minuto y segundo. (U)Int* o Float* o Decimal
  • timezone — Nombre de la zona horaria. String

Valor devuelto

Devuelve un valor DateTime a partir de los argumentos indicados DateTime

Ejemplos

Ejemplo

SELECT YYYYMMDDhhmmssToDateTime(20230911131415);
┌─YYYYMMDDhhmmssToDateTime(20230911131415)─┐
│                      2023-09-11 13:14:15 │
└──────────────────────────────────────────┘

YYYYMMDDhhmmssToDateTime64

Introducido en: v23.9.0

Convierte un número que contiene el año, mes, día, hora, minuto y segundo en un DateTime64. Esta función es lo contrario de la función toYYYYMMDDhhmmss(). La salida no está definida si la entrada no codifica un valor DateTime64 válido.

Sintaxis

YYYYMMDDhhmmssToDateTime64(YYYYMMDDhhmmss[, precision[, timezone]])

Argumentos

  • YYYYMMDDhhmmss — Número que contiene el año, el mes, el día, la hora, el minuto y el segundo. (U)Int* o Float* o Decimal
  • precision — Precisión de la parte fraccionaria (0-9). UInt8
  • timezone — Nombre de la zona horaria. String

Valor devuelto

Devuelve un valor DateTime64 a partir de los argumentos proporcionados DateTime64

Ejemplos

Ejemplo

SELECT YYYYMMDDhhmmssToDateTime64(20230911131415, 3, 'Asia/Istanbul');
┌─YYYYMMDDhhmmssToDateTime64(20230911131415, 3, 'Asia/Istanbul')─┐
│                                        2023-09-11 13:14:15.000 │
└────────────────────────────────────────────────────────────────┘

addDate

Introducido en: v23.9.0

Añade el intervalo de tiempo a la fecha, fecha con hora, o fecha o fecha con hora codificada como cadena proporcionada. Si la suma da como resultado un valor fuera de los límites del tipo de dato, el resultado es indefinido.

Sintaxis

addDate(datetime, interval)

Argumentos

Valor devuelto

Devuelve la fecha o fecha con hora que se obtiene al sumar interval a datetime. Date or Date32 or DateTime or DateTime64

Ejemplos

Añadir un intervalo a una fecha

SELECT addDate(toDate('2018-01-01'), INTERVAL 3 YEAR)
┌─addDate(toDate('2018-01-01'), toIntervalYear(3))─┐
│                                       2021-01-01 │
└──────────────────────────────────────────────────┘

addDays

Introducido en: v1.1.0

Añade un número determinado de días a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

addDays(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime más num días. Date o Date32 o DateTime o DateTime64

Ejemplos

Añadir días a distintos tipos de fecha

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
┌─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 │
└────────────────────┴─────────────────────────┴────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 day)
┌─plus(CAST('1998-06-16', 'Date'), toIntervalDay(10))─┐
│                                          1998-06-26 │
└─────────────────────────────────────────────────────┘

addHours

Introducido en: v1.1.0

Añade un número determinado de horas a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

addHours(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime más num horas DateTime o DateTime64(3)

Ejemplos

Añadir horas a distintos tipos de fecha

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
┌─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 │
└─────────────────────┴──────────────────────────┴─────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 hour)
┌─plus(CAST('1998-06-16', 'Date'), toIntervalHour(10))─┐
│                                  1998-06-16 10:00:00 │
└──────────────────────────────────────────────────────┘

addInterval

Introducido en: v22.11.0

Suma un intervalo a otro intervalo o a una tupla de intervalos.

Sintaxis

addInterval(interval_1, interval_2)

Argumentos

Valor devuelto

Devuelve una tupla de intervalos Tuple(Interval)

Ejemplos

Sumar intervalos

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)
┌─addInterval(toIntervalDay(1), toIntervalMonth(1))─┐
│ (1,1)                                             │
└───────────────────────────────────────────────────┘
┌─addInterval((toIntervalDay(1), toIntervalYear(1)), toIntervalMonth(1))─┐
│ (1,1,1)                                                                │
└────────────────────────────────────────────────────────────────────────┘
┌─addInterval(toIntervalDay(2), toIntervalDay(1))─┐
│ (3)                                             │
└─────────────────────────────────────────────────┘

addMicroseconds

Introducido en: v22.6.0

Añade un número especificado de microsegundos a una fecha y hora o a una fecha y hora codificada como cadena.

Sintaxis

addMicroseconds(datetime, num)

Argumentos

  • datetime — Fecha con hora a la que se añadirá el número especificado de microsegundos. DateTime o DateTime64 o String
  • num — Número de microsegundos que se añadirán. (U)Int* o Float*

Valor devuelto

Devuelve date_time más num microsegundos DateTime64

Ejemplos

Añadir microsegundos a distintos tipos de fecha y hora

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
┌─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 │
└─────────────────────────────────┴────────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 10 microsecond)
┌─plus(CAST('1998-06-16', 'DateTime'), toIntervalMicrosecond(10))─┐
│                                      1998-06-16 00:00:00.000010 │
└─────────────────────────────────────────────────────────────────┘

addMilliseconds

Introducido en: v22.6.0

Añade una cantidad especificada de milisegundos a una fecha con hora o a una fecha con hora codificada como cadena.

Sintaxis

addMilliseconds(datetime, num)

Argumentos

  • datetime — Fecha con hora a la que se añadirá el número especificado de milisegundos. DateTime o DateTime64 o String
  • num — Número de milisegundos que se añadirán. (U)Int* o Float*

Valor devuelto

Devuelve datetime con num milisegundos añadidos DateTime64

Ejemplos

Añadir milisegundos a distintos tipos de fecha y hora

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
┌─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 │
└─────────────────────────────────┴────────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 10 millisecond)
┌─plus(CAST('1998-06-16', 'DateTime'), toIntervalMillisecond(10))─┐
│                                         1998-06-16 00:00:00.010 │
└─────────────────────────────────────────────────────────────────┘

addMinutes

Introducido en: v1.1.0

Añade un número determinado de minutos a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

addMinutes(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime más num minutos. DateTime o DateTime64(3)

Ejemplos

Añadir minutos a distintos tipos de fecha

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
┌─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 │
└───────────────────────┴────────────────────────────┴───────────────────────────────────┘

Uso de una sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 minute)
┌─plus(CAST('1998-06-16', 'Date'), toIntervalMinute(10))─┐
│                                    1998-06-16 00:10:00 │
└────────────────────────────────────────────────────────┘

addMonths

Introducido en: v1.1.0

Añade una cantidad determinada de meses a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

addMonths(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime con num meses añadidos Date o Date32 o DateTime o DateTime64

Ejemplos

Añadir meses a distintos tipos de fecha

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
┌─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 │
└──────────────────────┴───────────────────────────┴──────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 month)
┌─plus(CAST('1998-06-16', 'Date'), toIntervalMonth(10))─┐
│                                            1999-04-16 │
└───────────────────────────────────────────────────────┘

addNanoseconds

Introducido en: v22.6.0

Añade una cantidad especificada de nanosegundos a una fecha con hora o a una fecha con hora codificada como cadena.

Sintaxis

addNanoseconds(datetime, num)

Argumentos

  • datetime — Fecha con hora a la que se sumará el número especificado de nanosegundos. DateTime o DateTime64 o String
  • num — Número de nanosegundos que se sumarán. (U)Int* o Float*

Valor devuelto

Devuelve datetime más num nanosegundos DateTime64

Ejemplos

Sumar nanosegundos a distintos tipos de fecha y hora

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
┌─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 │
└────────────────────────────────┴───────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 1000 nanosecond)
┌─plus(CAST('1998-06-16', 'DateTime'), toIntervalNanosecond(1000))─┐
│                                    1998-06-16 00:00:00.000001000 │
└──────────────────────────────────────────────────────────────────┘

addQuarters

Introducido en: v20.1.0

Añade un número especificado de trimestres a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

addQuarters(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime más num trimestres. Date o Date32 o DateTime o DateTime64

Ejemplos

Añadir trimestres a distintos tipos de fecha

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
┌─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 │
└────────────────────────┴─────────────────────────────┴────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 quarter)
┌─plus(CAST('1998-06-16', 'Date'), toIntervalQuarter(10))─┐
│                                              2000-12-16 │
└─────────────────────────────────────────────────────────┘

addSeconds

Introducido en: v1.1.0

Añade un número especificado de segundos a una fecha, una fecha con hora, o una fecha o fecha con hora codificada como cadena.

Sintaxis

addSeconds(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime más num segundos DateTime o DateTime64(3)

Ejemplos

Añadir segundos a distintos tipos de fecha

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
┌─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 │
└───────────────────────┴────────────────────────────┴───────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 second)
┌─plus(CAST('1998-06-16', 'Date'), toIntervalSecond(10))─┐
│                                    1998-06-16 00:00:10 │
└────────────────────────────────────────────────────────┘

addTupleOfIntervals

Introducido en: v22.11.0

Añade de forma consecutiva una tupla de intervalos a una fecha o a una fecha y hora.

Sintaxis

addTupleOfIntervals(datetime, intervals)

Argumentos

Valor devuelto

Devuelve date con intervals añadidos. Date o Date32 o DateTime o DateTime64

Ejemplos

Añadir una tupla de intervalos a una fecha

WITH toDate('2018-01-01') AS date
SELECT addTupleOfIntervals(date, (INTERVAL 1 DAY, INTERVAL 1 MONTH, INTERVAL 1 YEAR))
┌─addTupleOfIntervals(date, (toIntervalDay(1), toIntervalMonth(1), toIntervalYear(1)))─┐
│                                                                           2019-02-02 │
└──────────────────────────────────────────────────────────────────────────────────────┘

addWeeks

Introducido en: v1.1.0

Añade un número especificado de semanas a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

addWeeks(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime más num semanas Date o Date32 o DateTime o DateTime64

Ejemplos

Añadir semanas a distintos tipos de fecha

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
┌─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 │
└─────────────────────┴──────────────────────────┴─────────────────────────────────┘

Uso de una sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 week)
┌─plus(CAST('1998-06-16', 'Date'), toIntervalWeek(10))─┐
│                                           1998-08-25 │
└──────────────────────────────────────────────────────┘

addYears

Introducido en: v1.1.0

Añade un número determinado de años a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

addYears(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime más num años. Date o Date32 o DateTime o DateTime64

Ejemplos

Añadir años a distintos tipos de fecha

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
┌─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 │
└─────────────────────┴──────────────────────────┴─────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 year)
┌─plus(CAST('1998-06-16', 'Date'), toIntervalYear(10))─┐
│                                           2008-06-16 │
└──────────────────────────────────────────────────────┘

age

Introducido en: v23.1.0

Devuelve el componente de la unidad de la diferencia entre startdate y enddate. La diferencia se calcula con una precisión de 1 nanosegundo.

Por ejemplo, la diferencia entre 2021-12-29 y 2022-01-01 es de 3 días para la unidad de día, 0 meses para la unidad de mes y 0 años para la unidad de año.

Para ver una alternativa a age, consulte la función dateDiff.

Sintaxis

age('unit', startdate, enddate[, timezone])

Argumentos

  • unit — El tipo de intervalo del resultado.
Unidad Posibles valores
nanosecond nanosecond, nanoseconds, ns
microsecond microsecond, microseconds, us, u
millisecond millisecond, milliseconds, ms
second second, seconds, ss, s
minute minute, minutes, mi, n
hour hour, hours, hh, h
day day, days, dd, d
week week, weeks, wk, ww
month month, months, mm, m
quarter quarter, quarters, qq, q
year year, years, yyyy, yy
  • startdate — El primer valor temporal que se resta (el sustraendo). Date o Date32 o DateTime o DateTime64
  • enddate — El segundo valor temporal del que se resta (el minuendo). Date o Date32 o DateTime o DateTime64
  • timezone — Opcional. Nombre de la zona horaria. Si se especifica, se aplica tanto a startdate como a enddate. Si no se especifica, se usan las zonas horarias de startdate y enddate. Si no coinciden, el resultado no está definido. String

Valor devuelto

Devuelve la diferencia entre enddate y startdate expresada en unit. Int32

Ejemplos

Calcular la edad en horas

SELECT age('hour', toDateTime('2018-01-01 22:30:00'), toDateTime('2018-01-02 23:00:00'))
┌─age('hour', toDateTime('2018-01-01 22:30:00'), toDateTime('2018-01-02 23:00:00'))─┐
│                                                                                24 │
└───────────────────────────────────────────────────────────────────────────────────┘

Calcular la edad en distintas unidades

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
┌──────────e─┬──────────s─┬─day_age─┬─month_age─┬─year_age─┐
│ 2022-01-01 │ 2021-12-29 │       3 │         0 │        0 │
└────────────┴────────────┴─────────┴───────────┴──────────┘

changeDay

Introducido en: v24.7.0

Cambia el componente de día de una fecha o de una fecha y hora.

Sintaxis

changeDay(date_or_datetime, value)

Argumentos

Valor devuelto

Devuelve un valor del mismo tipo que date_or_datetime, con el componente de día modificado. Date o Date32 o DateTime o DateTime64

Ejemplos

Ejemplo de uso

SELECT changeDay('2024-01-31'::DateTime, 15)
2024-01-15 00:00:00

changeHour

Introducido en: v24.7.0

Cambia el componente de hora de una fecha o fecha y hora.

Sintaxis

changeHour(date_or_datetime, value)

Argumentos

Valor devuelto

Devuelve un valor del mismo tipo que date_or_datetime, con el componente de hora modificado. DateTime o DateTime64

Ejemplos

Ejemplo de uso

SELECT changeHour('2024-01-01 12:00:00'::DateTime, 5)
2024-01-01 05:00:00

changeMinute

Introducido en: v24.7.0

Cambia el componente de minutos de una fecha o fecha y hora.

Sintaxis

changeMinute(date_or_datetime, value)

Argumentos

Valor devuelto

Devuelve un valor del mismo tipo que date_or_datetime, con el componente de minutos modificado. DateTime o DateTime64

Ejemplos

Ejemplo de uso

SELECT changeMinute('2024-01-01 12:30:00'::DateTime, 45)
2024-01-01 12:45:00

changeMonth

Introducido en: v24.7.0

Modifica el componente de mes de una fecha o de una fecha y hora.

Sintaxis

changeMonth(date_or_datetime, value)

Argumentos

Valor devuelto

Devuelve un valor del mismo tipo que date_or_datetime, con el componente de mes modificado. Date o Date32 o DateTime o DateTime64

Ejemplos

Ejemplo de uso

SELECT changeMonth('2024-01-01'::DateTime, 12)
2024-12-01 00:00:00

changeSecond

Introducido en: v24.7.0

Cambia el componente de segundos de una fecha o de una fecha y hora.

Sintaxis

changeSecond(date_or_datetime, value)

Argumentos

Valor devuelto

Devuelve un valor del mismo tipo que date_or_datetime, con el componente de segundos modificado. DateTime o DateTime64

Ejemplos

Ejemplo de uso

SELECT changeSecond('2024-01-01 12:30:45'::DateTime, 15)
2024-01-01 12:30:15

changeYear

Introducido en: v24.7.0

Cambia el componente de año de una fecha o de una fecha y hora.

Sintaxis

changeYear(date_or_datetime, value)

Argumentos

Valor devuelto

Devuelve un valor del mismo tipo que date_or_datetime con el componente de año modificado. Date o Date32 o DateTime o DateTime64

Ejemplos

Ejemplo de uso

SELECT changeYear('2024-01-01'::DateTime, 2023)
2023-01-01 00:00:00

dateDiff

Introducido en: v23.4.0

Devuelve la cantidad de límites de la unit especificada que se cruzan entre startdate y enddate. La diferencia se calcula mediante unidades relativas. Por ejemplo, la diferencia entre 2021-12-29 y 2022-01-01 es de 3 días para la unidad day (consulte toRelativeDayNum), 1 mes para la unidad month (consulte toRelativeMonthNum) y 1 año para la unidad year (consulte toRelativeYearNum).

Si se especifica la unidad week, dateDiff asume que las semanas comienzan en lunes. Tenga en cuenta que este comportamiento es diferente del de la función toWeek(), en la que las semanas comienzan de forma predeterminada en domingo.

Como alternativa a dateDiff, consulte la función age.

Sintaxis

dateDiff(unit, startdate, enddate[, timezone])

Alias: timestampDiff, TIMESTAMP_DIFF, DATE_DIFF, date_diff, timestamp_diff

Argumentos

  • unit — El tipo de intervalo del resultado.
Unidad Posibles valores
nanosegundo nanosecond, nanoseconds, ns
microsegundo microsecond, microseconds, us, u
milisegundo millisecond, milliseconds, ms
segundo second, seconds, ss, s
minuto minute, minutes, mi, n
hora hour, hours, hh, h
día day, days, dd, d
semana week, weeks, wk, ww
mes month, months, mm, m
trimestre quarter, quarters, qq, q
año year, years, yyyy, yy
  • startdate — El primer valor de tiempo que se resta (el sustraendo). Date o Date32 o DateTime o DateTime64
  • enddate — El segundo valor de tiempo del que se resta (el minuendo). Date o Date32 o DateTime o DateTime64
  • timezone — Opcional. Nombre de la zona horaria. Si se especifica, se aplica tanto a startdate como a enddate. Si no se especifica, se usan las zonas horarias de startdate y enddate. Si no coinciden, el resultado no está definido. String

Valor devuelto

Devuelve la diferencia entre enddate y startdate expresada en unit. Int64

Ejemplos

Calcular la diferencia entre fechas en horas

SELECT dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) AS res
┌─res─┐
│  25 │
└─────┘

Calcular la diferencia entre fechas en distintas unidades

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
┌──────────e─┬──────────s─┬─day_diff─┬─month_diff─┬─year_diff─┐
│ 2022-01-01 │ 2021-12-29 │        3 │          1 │         1 │
└────────────┴────────────┴──────────┴────────────┴───────────┘

dateName

Introducido en: v21.7.0

Devuelve la parte especificada de una fecha.

Valores posibles:

  • 'year'
  • 'quarter'
  • 'month'
  • 'week'
  • 'dayofyear'
  • 'day'
  • 'weekday'
  • 'hour'
  • 'minute'
  • 'second'

Sintaxis

dateName(date_part, date[, timezone])

Argumentos

Valor devuelto

Devuelve la parte especificada de la fecha. String

Ejemplos

Extraer distintas partes de la fecha

WITH toDateTime('2021-04-14 11:22:33') AS date_value
SELECT
    dateName('year', date_value),
    dateName('month', date_value),
    dateName('day', date_value)
┌─dateName('year', date_value)─┬─dateName('month', date_value)─┬─dateName('day', date_value)─┐
│ 2021                         │ April                         │ 14                          │
└──────────────────────────────┴───────────────────────────────┴─────────────────────────────┘

dateTrunc

Introducido en: v20.8.0

Trunca un valor de fecha y hora según la parte de la fecha especificada.

Sintaxis

dateTrunc(unit, datetime[, timezone])

Alias: DATE_TRUNC

Argumentos

  • unit — El tipo de intervalo al que se trunca el resultado. Valores posibles: nanosecond (solo DateTime64), microsecond (solo DateTime64), millisecond (solo DateTime64), second, minute, hour, day, week, month, quarter, year. String
  • datetime — Fecha y hora. Date o Date32 o DateTime o DateTime64
  • timezone — Opcional. Nombre de la zona horaria del valor datetime devuelto. Si no se especifica, la función usa la zona horaria del parámetro datetime. String

Valor devuelto

Devuelve el valor de fecha y hora truncado.

Argumento unit Argumento datetime Tipo de retorno
Año, Trimestre, Mes, Semana Date32 o DateTime64 o Date o DateTime Date32 o Date
Día, Hora, Minuto, Segundo Date32, DateTime64, Date o DateTime DateTime64 o DateTime
Milisegundo, Microsegundo, Cualquiera DateTime64
Nanosegundo con escala 3, 6 o 9

Ejemplos

Truncar sin zona horaria

SELECT now(), dateTrunc('hour', now());
┌───────────────now()─┬─dateTrunc('hour', now())──┐
│ 2020-09-28 10:40:45 │       2020-09-28 10:00:00 │
└─────────────────────┴───────────────────────────┘

Truncar con la zona horaria especificada

SELECT now(), dateTrunc('hour', now(), 'Asia/Istanbul');
┌───────────────now()─┬─dateTrunc('hour', now(), 'Asia/Istanbul')──┐
│ 2020-09-28 10:46:26 │                        2020-09-28 13:00:00 │
└─────────────────────┴────────────────────────────────────────────┘

formatDateTime

Introducido en: v1.1.0

Da formato a una fecha o fecha con hora según la cadena de formato especificada. format es una expresión constante, por lo que no puede haber varios formatos para una misma columna de resultado.

formatDateTime usa el estilo de formato de fecha y hora de MySQL; consulta la documentación de MySQL.

La operación opuesta de esta función es parseDateTime.

Mediante campos de reemplazo, puedes definir un patrón para la cadena resultante. La columna de ejemplo de la tabla siguiente muestra el resultado del formateo para 2018-01-02 22:33:44.

Campos de reemplazo:

Marcador de posición Descripción Ejemplo
%a nombre abreviado del día de la semana (Mon-Sun) Mon
%b nombre abreviado del mes (Jan-Dec) Jan
%c mes como número entero (01-12) 01
%C año dividido entre 100 y truncado a entero (00-99) 20
%d día del mes, rellenado con ceros (01-31) 02
%D fecha corta MM/DD/YY, equivalente a %m/%d/%y 01/02/18
%e día del mes, rellenado con espacios (1-31) 2
%f fracción de segundo 123456
%F fecha corta YYYY-MM-DD, equivalente a %Y-%m-%d 2018-01-02
%g formato de año de dos dígitos, alineado con ISO 8601 18
%G formato de año de cuatro dígitos para el número de semana ISO 2018
%h hora en formato de 12 h (01-12) 09
%H hora en formato de 24 h (00-23) 22
%i minuto (00-59) 33
%I hora en formato de 12 h (01-12) 10
%j día del año (001-366) 002
%k hora en formato de 24 h (00-23) 14
%l hora en formato de 12 h (01-12) 09
%m mes como número entero (01-12) 01
%M nombre completo del mes (January-December) January
%n carácter de nueva línea
%p indicador AM o PM PM
%Q trimestre (1-4) 1
%r hora en formato de 12 horas HH:MM AM/PM, equivalente a %h:%i %p 10:30 PM
%R hora en formato de 24 horas HH:MM, equivalente a %H:%i 22:33
%s segundo (00-59) 44
%S segundo (00-59) 44
%t carácter de tabulación horizontal
%T formato de hora ISO 8601 (HH:MM:SS), equivalente a %H:%i:%S 22:33:44
%u día de la semana ISO 8601 como número, con Monday como 1 (1-7) 2
%V número de semana ISO 8601 (01-53) 01
%w día de la semana como número entero, con Sunday como 0 (0-6) 2
%W nombre completo del día de la semana (Monday-Sunday) Monday
%y año, dos últimos dígitos (00-99) 18
%Y año 2018
%z desfase horario respecto a UTC como +HHMM o -HHMM -0500
%% un signo % %
  • En versiones de ClickHouse anteriores a v23.4, %f imprime un único cero (0) si el valor formateado es un Date, Date32 o DateTime (que no tienen fracciones de segundo) o un DateTime64 con una precisión de 0.
  • En versiones de ClickHouse anteriores a v25.1, %f imprime tantos dígitos como especifique la escala de DateTime64 en lugar de 6 dígitos fijos.
  • En versiones de ClickHouse anteriores a v23.4, %M imprime el minuto (00-59) en lugar del nombre completo del mes (January-December).

Sintaxis

formatDateTime(datetime, format[, timezone])

Alias: DATE_FORMAT

Argumentos

  • datetime — Una fecha o una fecha y hora para formatear. Date o Date32 o DateTime o DateTime64
  • format — Cadena de formato con campos de reemplazo. String
  • timezone — Opcional. Nombre de la zona horaria para la hora formateada. String

Valor devuelto

Devuelve valores de fecha y hora según el formato especificado. String

Ejemplos

Formatear una fecha con el marcador de posición del año

SELECT formatDateTime(toDate('2010-01-04'), '%g')
┌─formatDateTime(toDate('2010-01-04'), '%g')─┐
│ 10                                         │
└────────────────────────────────────────────┘

Formatear DateTime64 con fracciones de segundo

SELECT formatDateTime(toDateTime64('2010-01-04 12:34:56.123456', 7), '%f')
┌─formatDateTime(toDateTime64('2010-01-04 12:34:56.123456', 7), '%f')─┐
│ 123456                                                              │
└─────────────────────────────────────────────────────────────────────┘

Formato con zona horaria

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

Introducido en: v20.1.0

Es similar a formatDateTime, excepto que formatea la fecha y hora con el estilo de Joda en lugar del estilo de MySQL. Consulta la documentación de Joda Time.

La operación opuesta de esta función es parseDateTimeInJodaSyntax.

Mediante campos de reemplazo, puede definir un patrón para la cadena resultante.

Campos de reemplazo:

Marcador de posición Descripción Presentación Ejemplos
G era texto AD
C siglo de la era (>=0) número 20
Y año de la era (>=0) año 1996
x año de semana (aún no admitido) año 1996
w semana del año de semana (aún no admitido) número 27
e día de la semana número 2
E día de la semana texto Tuesday; Tue
y año año 1996
D día del año número 189
M mes del año mes July; Jul; 07
d día del mes número 10
a medio día texto PM
K hora del medio día (0~11) número 0
h hora de reloj del medio día (1~12) número 12
H hora del día (0~23) número 0
k hora de reloj del día (1~24) número 24
m minuto de la hora número 30
s segundo del minuto número 55
S fracción de segundo número 978
z zona horaria texto Eastern Standard Time; EST
Z desplazamiento de la zona horaria zona -0800; -0812
' escape para texto delimitador
'' comilla simple literal '

Sintaxis

formatDateTimeInJodaSyntax(datetime, format[, timezone])

Argumentos

  • datetime — Una fecha o una fecha y hora para formatear. DateTime o Date o Date32 o DateTime64
  • format — Cadena de formato con campos de reemplazo de estilo Joda. String
  • timezone — Opcional. Nombre de la zona horaria para la hora formateada. String

Valor devuelto

Devuelve valores de fecha y hora según el formato especificado. String

Ejemplos

Formatear datetime con sintaxis Joda

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                                                                  │
└──────────────────────────────────────────────────────────────────────────────────────┘

fromDaysSinceYearZero

Introducido en: v23.11.0

Para un número determinado de días transcurridos desde el 1 de enero de 0000, devuelve la fecha correspondiente en el calendario gregoriano proléptico definido por la norma ISO 8601.

El cálculo es el mismo que el de la función FROM_DAYS() de MySQL. El resultado no está definido si no puede representarse dentro de los límites del tipo Date.

Sintaxis

fromDaysSinceYearZero(days)

Alias: FROM_DAYS

Argumentos

  • days — La cantidad de días transcurridos desde el año cero. UInt32

Valor devuelto

Devuelve la fecha correspondiente a la cantidad de días transcurridos desde el año cero. Date

Ejemplos

Convertir los días transcurridos desde el año cero en fechas

SELECT
fromDaysSinceYearZero(739136) AS date1,
fromDaysSinceYearZero(toDaysSinceYearZero(toDate('2023-09-08'))) AS date2
┌──────date1─┬──────date2─┐
│ 2023-09-08 │ 2023-09-08 │
└────────────┴────────────┘

fromDaysSinceYearZero32

Introducido en: v23.11.0

Para un número determinado de días transcurridos desde el 1 de enero de 0000, devuelve la fecha correspondiente en el calendario gregoriano proléptico definido por ISO 8601. El cálculo es el mismo que el de la función FROM_DAYS() de MySQL. El resultado no está definido si no puede representarse dentro de los límites del tipo Date32.

Sintaxis

fromDaysSinceYearZero32(days)

Argumentos

  • days — El número de días transcurridos desde el año cero. UInt32

Valor devuelto

Devuelve la fecha correspondiente al número de días transcurridos desde el año cero. Date32

Ejemplos

Convertir días desde el año cero en fechas

SELECT
fromDaysSinceYearZero32(739136) AS date1,
fromDaysSinceYearZero32(toDaysSinceYearZero(toDate('2023-09-08'))) AS date2
┌──────date1─┬──────date2─┐
│ 2023-09-08 │ 2023-09-08 │
└────────────┴────────────┘

fromModifiedJulianDay

Introducido en: v21.1.0

Convierte un número de día juliano modificado en una fecha del calendario gregoriano proléptico en formato de texto YYYY-MM-DD. Esta función admite números de día entre -678941 y 2973483 (que representan 0000-01-01 y 9999-12-31, respectivamente). Genera una excepción si el número de día está fuera del rango admitido.

Sintaxis

fromModifiedJulianDay(day)

Argumentos

  • day — número de Día Juliano Modificado. (U)Int*

Valor devuelto

Devuelve la fecha en formato de texto. String

Ejemplos

Convertir un Día Juliano Modificado en fecha

SELECT fromModifiedJulianDay(58849)
┌─fromModifiedJulianDay(58849)─┐
│ 2020-01-01                   │
└──────────────────────────────┘

fromModifiedJulianDayOrNull

Introducido en: v21.1.0

Similar a fromModifiedJulianDay(), pero en lugar de lanzar una excepción, devuelve NULL.

Sintaxis

fromModifiedJulianDayOrNull(day)

Argumentos

  • day — número de día juliano modificado. (U)Int*

Valor devuelto

Devuelve la fecha en formato de texto cuando el argumento day es válido; de lo contrario, null. Nullable(String)

Ejemplos

Convertir el día juliano modificado en fecha con manejo de null

SELECT fromModifiedJulianDayOrNull(58849);
SELECT fromModifiedJulianDayOrNull(60000000); -- invalid argument, returns NULL
┌─fromModifiedJulianDayOrNull(58849)─┐
│ 2020-01-01                         │
└────────────────────────────────────┘
┌─fromModifiedJulianDayOrNull(60000000)─┐
│ ᴺᵁᴸᴸ                                  │
└───────────────────────────────────────┘

fromUTCTimestamp

Introducido en: v22.1.0

Convierte un valor de fecha o de fecha con hora de la zona horaria UTC en un valor de fecha o de fecha con hora con la zona horaria especificada. Esta función se incluye principalmente por compatibilidad con Apache Spark y marcos de trabajo similares.

Sintaxis

fromUTCTimestamp(datetime, time_zone)

Alias: from_utc_timestamp

Argumentos

  • datetime — Un valor constante de fecha o fecha con hora, o una expresión. DateTime o DateTime64
  • time_zone — Un valor constante de tipo String o una expresión que representa la zona horaria. String

Valor devuelto

Devuelve un valor DateTime/DateTime64 en la zona horaria especificada. DateTime o DateTime64

Ejemplos

Convierte la zona horaria UTC a la zona horaria especificada

SELECT fromUTCTimestamp(toDateTime64('2023-03-16 10:00:00', 3), 'Asia/Shanghai')
┌─fromUTCTimestamp(toDateTime64('2023-03-16 10:00:00', 3), 'Asia/Shanghai')─┐
│                                                   2023-03-16 18:00:00.000 │
└───────────────────────────────────────────────────────────────────────────┘

fromUnixTimestamp

Introducido en: v20.8.0

Esta función convierte una marca de tiempo Unix en una fecha de calendario y una hora del día.

Se puede llamar de dos maneras:

Sintaxis

fromUnixTimestamp(timestamp)
fromUnixTimestamp(timestamp[, format[, timezone]])

Alias: FROM_UNIXTIME

Argumentos

  • timestamp — marca de tiempo Unix o valor de fecha o fecha con hora. (U)Int* o Date o Date32 o DateTime o DateTime64
  • format — Opcional. Cadena de formato constante para dar formato a la salida. String
  • timezone — Opcional. Cadena constante de zona horaria. String

Valor devuelto

Devuelve un DateTime del timestamp cuando se llama con un argumento, o un String cuando se llama con dos o tres argumentos. DateTime o String

Ejemplos

Convertir una marca de tiempo Unix a DateTime

SELECT fromUnixTimestamp(423543535)
┌─fromUnixTimestamp(423543535)─┐
│          1983-06-04 02:58:55 │
└──────────────────────────────┘

Convertir una marca de tiempo Unix con un formato

SELECT fromUnixTimestamp(1234334543, '%Y-%m-%d %R:%S') AS DateTime
┌─DateTime────────────┐
│ 2009-02-11 06:42:23 │
└─────────────────────┘

fromUnixTimestampInJodaSyntax

Introducido en: v23.1.0

Esta función convierte una marca de tiempo Unix en una fecha de calendario y una hora del día.

Se puede llamar de dos maneras:

Cuando recibe un único argumento de tipo Integer, devuelve un valor de tipo DateTime; es decir, se comporta como toDateTime.

Cuando recibe dos o tres argumentos, donde el primero es un valor de tipo Integer, Date, Date32, DateTime o DateTime64, el segundo es una cadena de formato constante y el tercero es una cadena constante opcional de zona horaria, la función devuelve un valor de tipo String; es decir, se comporta como formatDateTimeInJodaSyntax. En este caso, se utiliza el estilo de formato de fecha y hora de Joda.

Sintaxis

fromUnixTimestampInJodaSyntax(timestamp)
fromUnixTimestampInJodaSyntax(timestamp, format[, timezone])

Argumentos

  • timestamp — marca de tiempo Unix o valor de fecha y hora. (U)Int* o Date o Date32 o DateTime o DateTime64
  • format — Opcional. Cadena de formato constante con sintaxis Joda para el formato de salida. String
  • timezone — Opcional. Cadena constante de zona horaria. String

Valor devuelto

Devuelve una fecha con hora cuando se llama con un argumento, o un String cuando se llama con dos o tres argumentos.} DateTime o String

Ejemplos

Convertir una marca de tiempo Unix con formato Joda

SELECT fromUnixTimestampInJodaSyntax(1234334543, 'yyyy-MM-dd HH:mm:ss', 'UTC') AS DateTime
┌─DateTime────────────┐
│ 2009-02-11 06:42:23 │
└─────────────────────┘

localtime

Introducido en: v26.7.0

Devuelve la hora actual del día en la zona horaria del servidor (o la sesión) en el momento del análisis de la consulta. La función es una expresión constante. Corresponde al LOCALTIME estándar de SQL / PostgreSQL y equivale a CAST(now() AS Time).

Sintaxis

localtime()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la hora actual. Time

Ejemplos

Sintaxis estándar de SQL sin paréntesis

SELECT LOCALTIME
┌───────LOCALTIME─┐
│        07:42:09 │
└─────────────────┘

makeDate

Introducido en: v22.6.0

Crea un Date a partir de:

  • un año, un mes y un día
  • un año y el día del año

Sintaxis

makeDate(year, month, day)
makeDate(year, day_of_year)

Argumentos

Valor devuelto

Devuelve un valor Date construido a partir de los argumentos proporcionados Date

Ejemplos

Fecha a partir de un año, mes y día

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

Fecha a partir del año y el día del año

SELECT makeDate(2023, 42) AS date;
┌───────date─┐
│ 2023-02-11 │
└────────────┘

makeDate32

Introducido en: v22.6.0

Crea un Date32 a partir de:

  • un año, un mes y un día
  • un año y el día del año

Sintaxis

makeDate32(year, month, day)
makeDate32(year, day_of_year)

Argumentos

Valor devuelto

Devuelve un valor Date32 construido a partir de los argumentos proporcionados Date32

Ejemplos

Date32 a partir de un año, un mes y un día

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

Date32 a partir del año y del día del año

SELECT makeDate(2023, 42) AS date;
┌───────date─┐
│ 2023-02-11 │
└────────────┘

makeDateTime

Introducido en: v22.6.0

Crea un DateTime a partir del año, el mes, el día, la hora, el minuto y el segundo, con una zona horaria opcional.

Sintaxis

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

Argumentos

Valor devuelto

Devuelve un valor DateTime construido a partir de los argumentos proporcionados DateTime

Ejemplos

DateTime a partir de año, mes, día, hora, minuto y segundo

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

makeDateTime64

Introducido en: v22.6.0

Crea un DateTime64 a partir del año, el mes, el día, la hora, el minuto y el segundo, con fracción, precisión y zona horaria opcionales.

Sintaxis

makeDateTime64(year, month, day, hour, minute, second[, fraction[, precision[, timezone]]])

Argumentos

Valor devuelto

Devuelve un valor DateTime64 construido a partir de los argumentos proporcionados DateTime64

Ejemplos

DateTime64 a partir de year, month, day, hour, minute y second

SELECT makeDateTime64(2023, 5, 15, 10, 30, 45, 779, 5);
┌─makeDateTime64(2023, 5, 15, 10, 30, 45, 779, 5)─┐
│                       2023-05-15 10:30:45.00779 │
└─────────────────────────────────────────────────┘

monthName

Introducido en: v22.1.0

Devuelve el nombre del mes como una cadena a partir de un valor de fecha o de fecha con hora.

Sintaxis

monthName(datetime)

Argumentos

Valor devuelto

Devuelve el nombre del mes. String

Ejemplos

Obtener el nombre del mes a partir de una fecha

WITH toDateTime('2021-04-14 11:22:33') AS date_value
SELECT monthName(date_value)
┌─monthName(date_value)─┐
│ April                 │
└───────────────────────┘

now

Introducido en: v1.1.0

Devuelve la fecha y hora actuales en el momento del análisis de la consulta. La función es una expresión constante.

Sintaxis

now([timezone])

Alias: localtimestamp, current_timestamp

Argumentos

  • timezone — Opcional. Nombre de la zona horaria del valor devuelto. String

Valor devuelto

Devuelve la fecha y hora actuales. DateTime

Ejemplos

Consulta sin zona horaria

SELECT now()
┌───────────────now()─┐
│ 2020-10-17 07:42:09 │
└─────────────────────┘

Consulta con la zona horaria especificada

SELECT now('Asia/Istanbul')
┌─now('Asia/Istanbul')─┐
│  2020-10-17 10:42:23 │
└──────────────────────┘

Sintaxis SQL estándar sin paréntesis

SELECT NOW, CURRENT_TIMESTAMP
┌─────────────────NOW─┬───CURRENT_TIMESTAMP─┐
│ 2020-10-17 07:42:19 │ 2020-10-17 07:42:19 │
└─────────────────────┴─────────────────────┘

now64

Introducido en: v20.1.0

Devuelve la fecha y hora actuales con precisión de fracciones de segundo en el momento del análisis de la consulta. La función es una expresión constante.

Sintaxis

now64([scale[, timezone]])

Argumentos

  • scale — Opcional. Tamaño del tick (precisión): 10^-precisión segundos. Rango válido: [0 : 9]. Normalmente se usan 3 (predeterminado) (milisegundos), 6 (microsegundos) y 9 (nanosegundos). UInt8
  • timezone — Opcional. Nombre de la zona horaria del valor devuelto. String

Valor devuelto

Devuelve la fecha y hora actuales con precisión de subsegundos. DateTime64

Ejemplos

Consulta con precisión predeterminada y personalizada

SELECT now64(), now64(9, 'Asia/Istanbul')
┌─────────────────now64()─┬─────now64(9, 'Asia/Istanbul')─┐
│ 2022-08-21 19:34:26.196 │ 2022-08-21 22:34:26.196542766 │
└─────────────────────────┴───────────────────────────────┘

nowInBlock

Introducido en: v22.8.0

Devuelve la fecha y hora actuales durante el procesamiento de cada bloque de datos. A diferencia de la función now, no es una expresión constante y el valor devuelto será diferente entre bloques en consultas de larga duración.

Conviene usar esta función para generar la hora actual en consultas INSERT SELECT de larga duración.

Sintaxis

nowInBlock([timezone])

Argumentos

  • timezone — Opcional. Nombre de la zona horaria del valor devuelto. String

Valor devuelto

Devuelve la fecha y hora actuales en el momento de procesarse cada bloque de datos. DateTime

Ejemplos

Diferencia con la función now()

SELECT
    now(),
    nowInBlock(),
    sleep(1)
FROM numbers(3)
SETTINGS max_block_size = 1
FORMAT PrettyCompactMonoBlock
┌───────────────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 │
└─────────────────────┴─────────────────────┴──────────┘

nowInBlock64

Introducido en: v25.8.0

Devuelve la fecha y hora actuales en el momento en que se procesa cada bloque de datos, en milisegundos. A diferencia de la función now64, no es una expresión constante, y el valor devuelto será diferente entre bloques en consultas de ejecución prolongada.

Tiene sentido utilizar esta función para generar la hora actual en consultas INSERT SELECT de ejecución prolongada.

Sintaxis

nowInBlock64([scale[, timezone]])

Argumentos

  • scale — Opcional. Tamaño del tick (precisión): 10^-precision segundos. Rango válido: [0 : 9]. Normalmente se usan 3 (predeterminado) (milisegundos), 6 (microsegundos) y 9 (nanosegundos). UInt8
  • timezone — Opcional. Nombre de la zona horaria del valor devuelto. String

Valor devuelto

Devuelve la fecha y hora actuales en el momento en que se procesa cada bloque de datos, con precisión de fracciones de segundo. DateTime64

Ejemplos

Diferencia con la función now64()

SELECT
    now64(),
    nowInBlock64(),
    sleep(1)
FROM numbers(3)
SETTINGS max_block_size = 1
FORMAT PrettyCompactMonoBlock
┌─────────────────now64()─┬──────────nowInBlock64()─┬─sleep(1)─┐
│ 2025-07-29 17:07:29.526 │ 2025-07-29 17:07:29.534 │        0 │
│ 2025-07-29 17:07:29.526 │ 2025-07-29 17:07:30.535 │        0 │
│ 2025-07-29 17:07:29.526 │ 2025-07-29 17:07:31.535 │        0 │
└─────────────────────────┴─────────────────────────┴──────────┘

serverTimezone

Introducido en: v23.6.0

Devuelve la zona horaria del servidor, es decir, el valor de la opción timezone. Si la función se ejecuta en el contexto de una tabla distribuida, genera una columna normal con valores correspondientes a cada segmento. De lo contrario, produce un valor constante.

Sintaxis

serverTimezone()

Alias: serverTimeZone

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la zona horaria del servidor como una String

Ejemplos

Ejemplo de uso

SELECT serverTimeZone()
┌─serverTimeZone()─┐
│ Etc/UTC          │
└──────────────────┘

subDate

Introducido en: v23.9.0

Resta el intervalo de tiempo de la fecha, fecha con hora, o fecha o fecha con hora codificada como cadena proporcionada. Si la resta da como resultado un valor fuera de los límites del tipo de dato, el resultado es indefinido.

Sintaxis

subDate(datetime, interval)

Argumentos

Valor devuelto

Devuelve la fecha o la fecha con hora obtenida al restar interval a datetime. Date o Date32 o DateTime o DateTime64

Ejemplos

Restar un intervalo a una fecha

SELECT subDate(toDate('2018-01-01'), INTERVAL 3 YEAR)
┌─subDate(toDate('2018-01-01'), toIntervalYear(3))─┐
│                                       2015-01-01 │
└──────────────────────────────────────────────────┘

subtractDays

Introducido en: v1.1.0

Resta un número especificado de días a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

subtractDays(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime menos num días. Date o Date32 o DateTime o DateTime64

Ejemplos

Restar días a distintos tipos de fecha

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
┌─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 │
└─────────────────────────┴──────────────────────────────┴─────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::Date, INTERVAL 10 day)
┌─minus(CAST('1998-06-16', 'Date'), toIntervalDay(10))─┐
│                                           1998-06-06 │
└──────────────────────────────────────────────────────┘

subtractHours

Introducido en: v1.1.0

Resta una cantidad determinada de horas a una fecha, una fecha con hora, o una fecha o fecha con hora codificada como cadena.

Sintaxis

subtractHours(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime menos num horas. DateTime o DateTime64(3)

Ejemplos

Restar horas a distintos tipos de fecha

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
┌─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 │
└──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::Date, INTERVAL 10 hour)
┌─minus(CAST('1998-06-16', 'Date'), toIntervalHour(10))─┐
│                                   1998-06-15 14:00:00 │
└───────────────────────────────────────────────────────┘

subtractInterval

Introducido en: v22.11.0

Añade un intervalo negado a otro intervalo o a una tupla de intervalos.

Nota: Los intervalos del mismo tipo se combinan en un único intervalo. Por ejemplo, si se pasan toIntervalDay(2) y toIntervalDay(1), el resultado será (1) en lugar de (2,1).

Sintaxis

subtractInterval(interval_1, interval_2)

Argumentos

Valor devuelto

Devuelve una tupla de intervalos Tuple(T)

Ejemplos

Restar intervalos

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);
┌─subtractInterval(toIntervalDay(1), toIntervalMonth(1))─┐
│ (1,-1)                                                 │
└────────────────────────────────────────────────────────┘
┌─subtractInterval((toIntervalDay(1), toIntervalYear(1)), toIntervalMonth(1))─┐
│ (1,1,-1)                                                                    │
└─────────────────────────────────────────────────────────────────────────────┘
┌─subtractInterval(toIntervalDay(2), toIntervalDay(1))─┐
│ (1)                                                  │
└──────────────────────────────────────────────────────┘

subtractMicroseconds

Introducido en: v22.6.0

Resta un número determinado de microsegundos de una fecha con hora o de una fecha con hora codificada como cadena.

Sintaxis

subtractMicroseconds(datetime, num)

Argumentos

  • datetime — Fecha con hora a la que se restará el número especificado de microsegundos. DateTime o DateTime64 o String
  • num — Número de microsegundos que se restará. (U)Int* o Float*

Valor devuelto

Devuelve datetime menos num microsegundos DateTime64

Ejemplos

Restar microsegundos de distintos tipos de fecha y hora

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
┌─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 │
└──────────────────────────────────────┴─────────────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 microsecond)
┌─minus(CAST('1998-06-16', 'DateTime'), toIntervalMicrosecond(10))─┐
│                                       1998-06-15 23:59:59.999990 │
└──────────────────────────────────────────────────────────────────┘

subtractMilliseconds

Introducido en: v22.6.0

Resta una cantidad determinada de milisegundos a una fecha con hora o a una fecha con hora codificada como cadena.

Sintaxis

subtractMilliseconds(datetime, num)

Argumentos

  • datetime — Fecha con hora de la que se restará el número especificado de milisegundos. DateTime o DateTime64 o String
  • num — Número de milisegundos que se restarán. (U)Int* o Float*

Valor devuelto

Devuelve datetime menos num milisegundos DateTime64

Ejemplos

Resta milisegundos de distintos tipos de fecha y hora

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
┌─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 │
└──────────────────────────────────────┴─────────────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 millisecond)
┌─minus(CAST('1998-06-16', 'DateTime'), toIntervalMillisecond(10))─┐
│                                          1998-06-15 23:59:59.990 │
└──────────────────────────────────────────────────────────────────┘

subtractMinutes

Introducido en: v1.1.0

Resta un número especificado de minutos a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

subtractMinutes(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime menos num minutos. DateTime o DateTime64(3)

Ejemplos

Restar minutos a distintos tipos de fecha

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
┌─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 │
└────────────────────────────┴─────────────────────────────────┴────────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::Date, INTERVAL 10 minute)
┌─minus(CAST('1998-06-16', 'Date'), toIntervalMinute(10))─┐
│                                     1998-06-15 23:50:00 │
└─────────────────────────────────────────────────────────┘

subtractMonths

Introducido en: v1.1.0

Resta un número determinado de meses de una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

subtractMonths(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime menos num meses Date o Date32 o DateTime o DateTime64

Ejemplos

Restar meses a distintos tipos de fecha

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
┌─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 │
└───────────────────────────┴────────────────────────────────┴───────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::Date, INTERVAL 10 month)
┌─minus(CAST('1998-06-16', 'Date'), toIntervalMonth(10))─┐
│                                             1997-08-16 │
└────────────────────────────────────────────────────────┘

subtractNanoseconds

Introducido en: v20.1.0

Resta un número determinado de nanosegundos a una fecha con hora o a una fecha con hora codificada como cadena.

Sintaxis

subtractNanoseconds(datetime, num)

Argumentos

  • datetime — Fecha con hora de la que se restará la cantidad especificada de nanosegundos. DateTime o DateTime64 o String
  • num — Cantidad de nanosegundos que se restará. (U)Int* o Float*

Valor devuelto

Devuelve datetime menos num nanosegundos. DateTime64

Ejemplos

Restar nanosegundos a distintos tipos de fecha con hora

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
┌─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 │
└─────────────────────────────────────┴────────────────────────────────────────────┘

Uso de una sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 nanosecond)
┌─minus(CAST('1998-06-16', 'DateTime'), toIntervalNanosecond(10))─┐
│                                   1998-06-15 23:59:59.999999990 │
└─────────────────────────────────────────────────────────────────┘

subtractQuarters

Introducido en: v20.1.0

Resta un número determinado de trimestres a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

subtractQuarters(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime menos num trimestres. Date o Date32 o DateTime o DateTime64

Ejemplos

Restar trimestres a distintos tipos de fecha

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
┌─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 │
└─────────────────────────────┴──────────────────────────────────┴─────────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::Date, INTERVAL 10 quarter)
┌─minus(CAST('1998-06-16', 'Date'), toIntervalQuarter(10))─┐
│                                               1995-12-16 │
└──────────────────────────────────────────────────────────┘

subtractSeconds

Introducido en: v1.1.0

Resta un número determinado de segundos a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

subtractSeconds(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime menos num segundos. DateTime o DateTime64(3)

Ejemplos

Restar segundos a distintos tipos de fecha

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
┌─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 │
└────────────────────────────┴─────────────────────────────────┴────────────────────────────────────────┘

Uso de una sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::Date, INTERVAL 10 second)
┌─minus(CAST('1998-06-16', 'Date'), toIntervalSecond(10))─┐
│                                     1998-06-15 23:59:50 │
└─────────────────────────────────────────────────────────┘

subtractTupleOfIntervals

Introducido en: v22.11.0

Resta de forma consecutiva una tupla de intervalos a una fecha o a una fecha con hora.

Sintaxis

subtractTupleOfIntervals(datetime, intervals)

Argumentos

Valor devuelto

Devuelve date con los intervals restados. Date o Date32 o DateTime o DateTime64

Ejemplos

Restar una tupla de intervalos a una fecha

WITH toDate('2018-01-01') AS date SELECT subtractTupleOfIntervals(date, (INTERVAL 1 DAY, INTERVAL 1 YEAR))
┌─subtractTupleOfIntervals(date, (toIntervalDay(1), toIntervalYear(1)))─┐
│                                                            2016-12-31 │
└───────────────────────────────────────────────────────────────────────┘

subtractWeeks

Introducido en: v1.1.0

Resta una cantidad determinada de semanas a una fecha, una fecha con hora o una fecha o fecha con hora codificada como cadena.

Sintaxis

subtractWeeks(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime menos num semanas. Date o Date32 o DateTime o DateTime64

Ejemplos

Restar semanas a distintos tipos de fecha

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
┌─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 │
└──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::Date, INTERVAL 10 week)
┌─minus(CAST('1998-06-16', 'Date'), toIntervalWeek(10))─┐
│                                            1998-04-07 │
└───────────────────────────────────────────────────────┘

subtractYears

Introducido en: v1.1.0

Resta un número determinado de años de una fecha, una fecha con hora o una fecha, o fecha con hora, codificada como cadena.

Sintaxis

subtractYears(datetime, num)

Argumentos

Valor devuelto

Devuelve datetime menos num años. Date o Date32 o DateTime o DateTime64

Ejemplos

Restar años a distintos tipos de fecha

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
┌─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 │
└──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘

Uso de la sintaxis alternativa de INTERVAL

SELECT dateSub('1998-06-16'::Date, INTERVAL 10 year)
┌─minus(CAST('1998-06-16', 'Date'), toIntervalYear(10))─┐
│                                            1988-06-16 │
└───────────────────────────────────────────────────────┘

timeDiff

Introducido en: v23.4.0

Devuelve la diferencia en segundos entre dos fechas o entre dos fechas con valores de hora. La diferencia se calcula como enddate - startdate.

Esta función es equivalente a dateDiff('second', startdate, enddate).

Para calcular diferencias de tiempo en otras unidades (horas, días, meses, etc.), utilice la función dateDiff.

Sintaxis

timeDiff(startdate, enddate)

Argumentos

Valor devuelto

Devuelve la diferencia entre enddate y startdate, expresada en segundos. Int64

Ejemplos

Calcular la diferencia temporal en segundos

SELECT timeDiff(toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) AS res
┌───res─┐
│ 90000 │
└───────┘

Calcular la diferencia de tiempo y convertirla en horas

SELECT timeDiff(toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) / 3600 AS hours
┌─hours─┐
│    25 │
└───────┘

Equivalente a dateDiff en segundos

SELECT
    timeDiff(toDateTime('2021-12-29'), toDateTime('2022-01-01')) AS time_diff_result,
    dateDiff('second', toDateTime('2021-12-29'), toDateTime('2022-01-01')) AS date_diff_result
┌─time_diff_result─┬─date_diff_result─┐
│           259200 │           259200 │
└──────────────────┴──────────────────┘

timeSlot

Introducido en: v1.1.0

Redondea la hora al inicio de un intervalo de media hora.

Sintaxis

timeSlot(time[, time_zone])

Argumentos

  • time — Hora que se redondeará al inicio de un intervalo de media hora. DateTime o Date32 o DateTime64
  • time_zone — Opcional. Un valor constante de tipo String o una expresión que representa la zona horaria. String

Valor devuelto

Devuelve la hora redondeada al inicio de un intervalo de media hora. DateTime

Ejemplos

Redondear la hora a un intervalo de media hora

SELECT timeSlot(toDateTime('2000-01-02 03:04:05', 'UTC'))
┌─timeSlot(toDateTime('2000-01-02 03:04:05', 'UTC'))─┐
│                                2000-01-02 03:00:00 │
└────────────────────────────────────────────────────┘

timeSlots

Introducido en: v1.1.0

Para un intervalo de tiempo que comienza en StartTime y se extiende durante Duration segundos, devuelve un array de instantes, formado por puntos de este intervalo redondeados hacia abajo a Size segundos. Size es un parámetro opcional cuyo valor predeterminado es 1800 (30 minutos).

Esto es necesario, por ejemplo, al buscar vistas de página en la sesión correspondiente.

Para DateTime64, la escala del valor devuelto puede diferir de la escala de StartTime. Se toma la escala más alta de todos los argumentos proporcionados.

Sintaxis

timeSlots(StartTime, Duration[, Size])

Argumentos

  • StartTime — Hora de inicio del intervalo. DateTime o DateTime64
  • Duration — Duración del intervalo en segundos. UInt32 o DateTime64
  • Size — Opcional. Tamaño de las franjas horarias en segundos. El valor predeterminado es 1800 (30 minutos). UInt32 o DateTime64

Valor devuelto

Devuelve un Array de DateTime/DateTime64 (el tipo de retorno coincide con el tipo de StartTime). En el caso de DateTime64, la escala del valor devuelto puede diferir de la escala de StartTime: se toma la escala más alta de todos los argumentos proporcionados. Array(DateTime) o Array(DateTime64)

Ejemplos

Generar franjas horarias para un intervalo

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))
┌─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']                        │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────┘

timestamp

Introducido en: v23.9.0

Convierte el primer argumento expr al tipo DateTime64(6). Si se proporciona un segundo argumento expr_time, suma la hora especificada al valor convertido.

Sintaxis

timestamp(expr[, expr_time])

Argumentos

  • expr — Fecha o fecha con hora. String
  • expr_time — Opcional. Hora que se añade al valor convertido. String

Valor devuelto

Devuelve el valor convertido de expr, o expr con la hora añadida, DateTime64(6)

Ejemplos

Convertir una cadena de fecha en DateTime64(6)

SELECT timestamp('2023-12-31') AS ts;
┌─────────────────────────ts─┐
│ 2023-12-31 00:00:00.000000 │
└────────────────────────────┘

Agregar una hora a una cadena de fecha

SELECT timestamp('2023-12-31 12:00:00', '12:00:00.11') AS ts;
┌─────────────────────────ts─┐
│ 2024-01-01 00:00:00.110000 │
└────────────────────────────┘

timezone

Introducido en: v21.4.0

Devuelve el nombre de la zona horaria de la sesión actual o convierte un desplazamiento o un nombre de zona horaria en un nombre canónico de zona horaria.

Sintaxis

timezone()

Alias: timeZone

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el nombre canónico de la zona horaria como un String

Ejemplos

Ejemplo de uso

SELECT timezone()
┌─timezone()───────┐
│ Europe/Amsterdam │
└──────────────────┘

timezoneOf

Introducido en: v21.4.0

Devuelve el nombre de la zona horaria de un valor DateTime o DateTime64.

Sintaxis

timezoneOf(datetime)

Alias: timeZoneOf

Argumentos

  • datetime — Un valor de tipo DateTime o DateTime64
  • timezone — Opcional. Nombre de la zona horaria a la que convertir el valor datetime. String

Valor devuelto

Devuelve el nombre de la zona horaria de datetime. String

Ejemplos

Ejemplo de uso

SELECT timezoneOf(now());
┌─timezoneOf(now())─┐
│ Etc/UTC           │
└───────────────────┘

timezoneOffset

Introducido en: v21.6.0

Devuelve el desfase horario en segundos con respecto a UTC. La función tiene en cuenta el horario de verano y los cambios históricos de la zona horaria en la fecha y hora especificadas.

Sintaxis

timezoneOffset(datetime)

Alias: timeZoneOffset

Argumentos

  • datetime — valor de DateTime para obtener el desplazamiento de la zona horaria. DateTime o DateTime64

Valor devuelto

Devuelve el desplazamiento con respecto a UTC en segundos Int32

Ejemplos

Ejemplo de uso

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;
┌────────────────Time─┬─Type─────────────────────────┬─Offset_in_seconds─┬─Offset_in_hours─┐
│ 2021-04-21 10:20:30 │ DateTime('America/New_York') │            -14400 │              -4 │
└─────────────────────┴──────────────────────────────┴───────────────────┴─────────────────┘

toDayOfMonth

Introducido en: v1.1.0

Devuelve el día del mes (1-31) de un valor Date o DateTime.

Sintaxis

toDayOfMonth(datetime)

Aliases: DAY, DAYOFMONTH

Argumentos

Valor devuelto

Devuelve el día del mes de la fecha/hora proporcionada UInt8

Ejemplos

Ejemplo de uso

SELECT toDayOfMonth(toDateTime('2023-04-21 10:20:30'))
┌─toDayOfMonth(toDateTime('2023-04-21 10:20:30'))─┐
│                                              21 │
└─────────────────────────────────────────────────┘

toDayOfWeek

Introducido en: v1.1.0

Devuelve el número correspondiente al día de la semana de un valor Date o DateTime.

La variante de dos argumentos de toDayOfWeek() le permite especificar si la semana comienza en lunes o en domingo, y si el valor devuelto debe estar en el rango de 0 a 6 o de 1 a 7.

Modo Primer día de la semana Rango
0 Lunes 1-7: Lunes = 1, Martes = 2, …, Domingo = 7
1 Lunes 0-6: Lunes = 0, Martes = 1, …, Domingo = 6
2 Domingo 0-6: Domingo = 0, Lunes = 1, …, Sábado = 6
3 Domingo 1-7: Domingo = 1, Lunes = 2, …, Sábado = 7

Sintaxis

toDayOfWeek(datetime[, mode[, timezone]])

Alias: DAYOFWEEK

Argumentos

  • datetime — Fecha o fecha con hora de la que se obtiene el día de la semana. Date o Date32 o DateTime o DateTime64
  • mode — Opcional. Entero que especifica el modo de semana (0-3). Si se omite, el valor predeterminado es 0. UInt8
  • timezone — Opcional. Zona horaria que se utilizará para la conversión. String

Valor devuelto

Devuelve el día de la semana para el Date o DateTime especificado UInt8

Ejemplos

Ejemplo de uso

-- La siguiente fecha es el 21 de abril de 2023, que fue un viernes:
SELECT
    toDayOfWeek(toDateTime('2023-04-21')),
    toDayOfWeek(toDateTime('2023-04-21'), 1)
┌─toDayOfWeek(toDateTime('2023-04-21'))─┬─toDayOfWeek(toDateTime('2023-04-21'), 1)─┐
│                                     5 │                                        4 │
└───────────────────────────────────────┴──────────────────────────────────────────┘

toDayOfYear

Introducido en: v18.4.0

Devuelve el número de día dentro del año (1-366) de un valor Date o DateTime.

Sintaxis

toDayOfYear(datetime)

Alias: DAYOFYEAR

Argumentos

Valor devuelto

Devuelve el día del año del valor Date o DateTime dado UInt16

Ejemplos

Ejemplo de uso

SELECT toDayOfYear(toDateTime('2023-04-21 10:20:30'))
┌─toDayOfYear(toDateTime('2023-04-21 10:20:30'))─┐
│                                            111 │
└────────────────────────────────────────────────┘

toDaysInMonth

Introducido en: v26.3.0

Devuelve el número de días del mes correspondiente a un Date o DateTime.

El valor devuelto está en el intervalo de 28 a 31.

Sintaxis

toDaysInMonth(datetime)

Argumentos

Valor devuelto

Devuelve el número de días del mes correspondiente a la fecha/hora indicada. UInt8

Ejemplos

Ejemplo de uso

SELECT toDaysInMonth(toDate('2023-02-01')), toDaysInMonth(toDate('2024-02-01')), toDaysInMonth(toDate('2023-01-01'))
┌─toDaysInMonth(toDate('2023-02-01'))─┬─toDaysInMonth(toDate('2024-02-01'))─┬─toDaysInMonth(toDate('2023-01-01'))─┐
│                                  28 │                                  29 │                                  31 │
└─────────────────────────────────────┴─────────────────────────────────────┴─────────────────────────────────────┘

toDaysSinceYearZero

Introducido en: v23.9.0

Para una fecha determinada, devuelve el número de días transcurridos desde el 1 de enero de 0000 en el calendario gregoriano proléptico definido por ISO 8601.

El cálculo es el mismo que en la función TO_DAYS de MySQL.

Sintaxis

toDaysSinceYearZero(date[, time_zone])

Alias: TO_DAYS

Argumentos

  • date — La fecha o fecha con hora para la que se calcula el número de días transcurridos desde el año cero. Date o Date32 o DateTime o DateTime64
  • time_zone — Zona horaria. String

Valor devuelto

Devuelve el número de días transcurridos desde la fecha 0000-01-01. UInt32

Ejemplos

Calcular los días desde el año cero

SELECT toDaysSinceYearZero(toDate('2023-09-08'))
┌─toDaysSinceYearZero(toDate('2023-09-08'))─┐
│                                    739136 │
└───────────────────────────────────────────┘

toHour

Introducido en: v1.1.0

Devuelve el componente horario (0-23) de un valor DateTime o DateTime64.

Sintaxis

toHour(datetime)

Aliases: HOUR

Argumentos

Valor devuelto

Devuelve la hora (0-23) de datetime. UInt8

Ejemplos

Ejemplo de uso

SELECT toHour(toDateTime('2023-04-21 10:20:30'))
┌─toHour(toDateTime('2023-04-21 10:20:30'))─┐
│                                        10 │
└───────────────────────────────────────────┘

toISOWeek

Introducido en: v20.1.0

Devuelve el número de semana ISO de una fecha o una fecha con hora.

Esta es una función de compatibilidad equivalente a toWeek(date, 3). Las semanas ISO comienzan en lunes y la primera semana del año contiene el 4 de enero. Según la norma ISO 8601, los números de semana están comprendidos entre 1 y 53.

Tenga en cuenta que las fechas cercanas al inicio o al final de un año pueden devolver un número de semana del año anterior o del siguiente. Por ejemplo, el 29 de diciembre de 2025 devuelve la semana 1 porque cae en la primera semana que contiene el 4 de enero de 2026.

Sintaxis

toISOWeek(datetime[, timezone])

Argumentos

Valor devuelto

Devuelve el número de semana ISO según el estándar ISO 8601. Devuelve un número entre 1 y 53. UInt8

Ejemplos

Obtener los números de semana ISO

SELECT toDate('2016-12-27') AS date, toISOWeek(date) AS isoWeek
┌───────date─┬─isoWeek─┐
│ 2016-12-27 │      52 │
└────────────┴─────────┘

La semana ISO puede pertenecer a un año distinto

SELECT toDate('2025-12-29') AS date, toISOWeek(date) AS isoWeek, toYear(date) AS year
┌───────date─┬─isoWeek─┬─year─┐
│ 2025-12-29 │       1 │ 2025 │
└────────────┴─────────┴──────┘

toISOYear

Introducido en: v18.4.0

Convierte una fecha o una fecha y hora en el número de año según ISO.

Sintaxis

toISOYear(datetime)

Argumentos

Valor devuelto

Devuelve el valor de entrada convertido en un número de año ISO. UInt16

Ejemplos

Obtener el año ISO a partir de valores de fecha

SELECT
toISOYear(toDate('2024/10/02')) as year1,
toISOYear(toDateTime('2024-10-02 01:30:00')) as year2
┌─year1─┬─year2─┐
│  2024 │  2024 │
└───────┴───────┘

toLastDayOfMonth

Introducido en: v1.1.0

Redondea una fecha o una fecha con hora al último día del mes.

Sintaxis

toLastDayOfMonth(value)

Alias: LAST_DAY

Argumentos

Valor devuelto

Devuelve la fecha correspondiente al último día del mes para la fecha o fecha con hora proporcionada. Date

Ejemplos

Redondear al último día del mes

SELECT toLastDayOfMonth(toDateTime('2023-04-21 10:20:30'))
┌─toLastDayOfMonth(toDateTime('2023-04-21 10:20:30'))─┐
│                                          2023-04-30 │
└─────────────────────────────────────────────────────┘

toLastDayOfWeek

Introducido en: v23.5.0

Redondea una fecha o fecha con hora hacia arriba, hasta el sábado o domingo más cercano.

Sintaxis

toLastDayOfWeek(datetime[, mode[, timezone]])

Argumentos

  • datetime — Una fecha o una fecha con hora que se va a convertir. Date o DateTime o Date32 o DateTime64
  • mode — Determina el primer día de la semana, tal como se describe en la función toWeek(). Valor predeterminado: 0. UInt8
  • timezone — Opcional. La zona horaria que se usará para la conversión. Si no se especifica, se usa la zona horaria del servidor. String

Valor devuelto

Devuelve la fecha del sábado o domingo más próximo, en esa fecha o después de ella, según el modo. Date o Date32

Ejemplos

Redondear hacia arriba al sábado o domingo más próximo

SELECT
    toLastDayOfWeek(toDateTime('2023-04-21 10:20:30')), /* a Friday */
    toLastDayOfWeek(toDateTime('2023-04-21 10:20:30'), 1), /* a Friday */
    toLastDayOfWeek(toDate('2023-04-23')), /* a Sunday */
    toLastDayOfWeek(toDate('2023-04-23'), 1) /* a Sunday */
FORMAT Vertical
Row 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-23')):                 2023-04-29
toLastDayOfWeek(toDate('2023-04-23'), 1):              2023-04-23

toMicrosecond

Introducido en: v25.7.0

Devuelve el componente de microsegundo (0-999999) de un valor DateTime64.

Sintaxis

toMicrosecond(datetime)

Alias: MICROSECOND

Argumentos

  • datetime — Fecha y hora de la que se obtiene el microsegundo. DateTime64

Valor devuelto

Devuelve el microsegundo del segundo (0 - 999999) de datetime. UInt32

Ejemplos

Ejemplo de uso

SELECT toMicrosecond(toDateTime64('2023-04-21 10:20:30.456789', 6));
┌─toMicrosecond(toDateTime64('2023-04-21 10:20:30.456789', 6))─┐
│                                                       456789 │
└──────────────────────────────────────────────────────────────┘

toMillisecond

Introducido en: v24.2.0

Devuelve el componente de milisegundo (0-999) de un valor DateTime o DateTime64.

Sintaxis

toMillisecond(datetime)

Aliases: MILLISECOND

Argumentos

Valor devuelto

Devuelve el milisegundo del minuto (0 - 59) de datetime. UInt16

Ejemplos

Ejemplo de uso

SELECT toMillisecond(toDateTime64('2023-04-21 10:20:30.456', 3));
┌─toMillisecond(toDateTime64('2023-04-21 10:20:30.456', 3))─┐
│                                                       456 │
└───────────────────────────────────────────────────────────┘

toMinute

Introducido en: v1.1.0

Devuelve el componente de minuto (0-59) de un valor Date o DateTime.

Sintaxis

toMinute(datetime)

Alias: MINUTE

Argumentos

Valor devuelto

Devuelve el minuto de la hora (0 - 59) de datetime. UInt8

Ejemplos

Ejemplo de uso

SELECT toMinute(toDateTime('2023-04-21 10:20:30'))
┌─toMinute(toDateTime('2023-04-21 10:20:30'))─┐
│                                          20 │
└─────────────────────────────────────────────┘

toModifiedJulianDay

Introducido en: v21.1.0

Convierte una fecha del calendario gregoriano proléptico en formato de texto YYYY-MM-DD en un número de día juliano modificado de tipo Int32. Esta función admite fechas desde 0000-01-01 hasta 9999-12-31. Genera una excepción si el argumento no puede interpretarse como una fecha o si la fecha no es válida.

Sintaxis

toModifiedJulianDay(date)

Argumentos

Valor devuelto

Devuelve el número de día juliano modificado. Int32

Ejemplos

Convertir la fecha a día juliano modificado

SELECT toModifiedJulianDay('2020-01-01')
┌─toModifiedJulianDay('2020-01-01')─┐
│                             58849 │
└───────────────────────────────────┘

toModifiedJulianDayOrNull

Introducida en: v21.1.0

Similar a toModifiedJulianDay(), pero en lugar de lanzar una excepción devuelve NULL.

Sintaxis

toModifiedJulianDayOrNull(date)

Argumentos

Valor devuelto

Devuelve el número de día juliano modificado para un date válido; de lo contrario, null. Nullable(Int32)

Ejemplos

Convertir una fecha a día juliano modificado con manejo de null

SELECT toModifiedJulianDayOrNull('2020-01-01');
SELECT toModifiedJulianDayOrNull('0000-00-00'); -- invalid date, returns NULL
┌─toModifiedJulianDayOrNull('2020-01-01')─┐
│                                   58849 │
└─────────────────────────────────────────┘
┌─toModifiedJulianDayOrNull('0000-00-00')─┐
│                                    ᴺᵁᴸᴸ │
└─────────────────────────────────────────┘

toMonday

Introducido en: v1.1.0

Redondea una fecha o fecha con hora hacia abajo hasta el lunes de la misma semana. Devuelve la fecha.

Sintaxis

toMonday(value)

Argumentos

Valor devuelto

Devuelve la fecha del lunes de la misma semana correspondiente a la fecha o fecha con hora proporcionada. Date

Ejemplos

Redondear hacia abajo hasta el lunes de la semana

SELECT
toMonday(toDateTime('2023-04-21 10:20:30')), -- A Friday
toMonday(toDate('2023-04-24'));              -- Already a Monday
┌─toMonday(toDateTime('2023-04-21 10:20:30'))─┬─toMonday(toDate('2023-04-24'))─┐
│                                  2023-04-17 │                     2023-04-24 │
└─────────────────────────────────────────────┴────────────────────────────────┘

toMonth

Introducido en: v1.1.0

Devuelve el componente mes (1-12) de un valor Date o DateTime.

Sintaxis

toMonth(datetime)

Alias: MONTH

Argumentos

Valor devuelto

Devuelve el mes de la fecha/hora indicada UInt8

Ejemplos

Ejemplo de uso

SELECT toMonth(toDateTime('2023-04-21 10:20:30'))
┌─toMonth(toDateTime('2023-04-21 10:20:30'))─┐
│                                          4 │
└────────────────────────────────────────────┘

toMonthNumSinceEpoch

Introducido en: v25.3.0

Devuelve el número de meses transcurridos desde el año 1970

Sintaxis

toMonthNumSinceEpoch(date)

Argumentos

Valor devuelto

Entero positivo

Ejemplos

Ejemplo

SELECT toMonthNumSinceEpoch(toDate('2024-10-01'))
657

toNanosecond

Introducido en: v25.7.0

Devuelve el componente de nanosegundo (0-999999999) de un valor DateTime64.

Sintaxis

toNanosecond(datetime)

Alias: NANOSECOND

Argumentos

  • datetime — Fecha y hora de la que se obtiene el nanosegundo. DateTime64

Valor devuelto

Devuelve el nanosegundo del segundo (0 - 999999999) de datetime. UInt32

Ejemplos

Ejemplo de uso

SELECT toNanosecond(toDateTime64('2023-04-21 10:20:30.123456789', 9));
┌─toNanosecond(toDateTime64('2023-04-21 10:20:30.123456789', 9))─┐
│                                                      123456789 │
└────────────────────────────────────────────────────────────────┘

toQuarter

Introducido en: v1.1.0

Devuelve el trimestre del año (1-4) correspondiente a un valor Date o DateTime.

Sintaxis

toQuarter(datetime)

Alias: QUARTER

Argumentos

Valor devuelto

Devuelve el trimestre del año de la fecha/hora indicada UInt8

Ejemplos

Ejemplo de uso

SELECT toQuarter(toDateTime('2023-04-21 10:20:30'))
┌─toQuarter(toDateTime('2023-04-21 10:20:30'))─┐
│                                            2 │
└──────────────────────────────────────────────┘

toRelativeDayNum

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en el número de días transcurridos desde un punto fijo determinado en el pasado. El momento exacto es un detalle de implementación y, por lo tanto, esta función no está pensada para usarse de forma independiente. El propósito principal de la función es calcular la diferencia en días entre dos fechas o fechas con hora; por ejemplo, toRelativeDayNum(dt1) - toRelativeDayNum(dt2).

Sintaxis

toRelativeDayNum(date)

Argumentos

Valor devuelto

Devuelve el número de días desde un punto de referencia fijo en el pasado. UInt32

Ejemplos

Obtener números relativos de día

SELECT toRelativeDayNum(toDate('2023-04-01')) - toRelativeDayNum(toDate('2023-01-01'))
┌─minus(toRelativeDayNum(toDate('2023-04-01')), toRelativeDayNum(toDate('2023-01-01')))─┐
│                                                                                    90 │
└───────────────────────────────────────────────────────────────────────────────────────┘

toRelativeHourNum

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en el número de horas transcurridas desde un determinado punto fijo en el pasado. El momento exacto es un detalle de implementación, por lo que esta función no está pensada para usarse de forma independiente. El propósito principal de esta función es calcular la diferencia en horas entre dos fechas o fechas con hora; por ejemplo, toRelativeHourNum(dt1) - toRelativeHourNum(dt2).

Sintaxis

toRelativeHourNum(date)

Argumentos

Valor devuelto

Devuelve el número de horas desde un punto de referencia fijo en el pasado. UInt32

Ejemplos

Obtener números de hora relativos

SELECT toRelativeHourNum(toDateTime('2023-01-01 12:00:00')) - toRelativeHourNum(toDateTime('2023-01-01 00:00:00')) AS hours_difference
┌─hours_difference─┐
│               12 │
└──────────────────┘

toRelativeMinuteNum

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en el número de minutos transcurridos desde un momento fijo determinado en el pasado. El momento exacto es un detalle de implementación y, por lo tanto, esta función no está pensada para usarse de forma independiente. El propósito principal de la función es calcular la diferencia en minutos entre dos fechas o fechas con hora; por ejemplo, toRelativeMinuteNum(dt1) - toRelativeMinuteNum(dt2).

Sintaxis

toRelativeMinuteNum(date)

Argumentos

Valor devuelto

Devuelve el número de minutos desde un punto de referencia fijo en el pasado. UInt32

Ejemplos

Obtener números de minutos relativos

SELECT toRelativeMinuteNum(toDateTime('2023-01-01 00:30:00')) - toRelativeMinuteNum(toDateTime('2023-01-01 00:00:00')) AS minutes_difference
┌─minutes_difference─┐
│                 30 │
└────────────────────┘

toRelativeMonthNum

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en el número de meses transcurridos desde un determinado punto fijo del pasado. El momento exacto es un detalle de implementación y, por lo tanto, esta función no está pensada para usarse por sí sola. El propósito principal de la función es calcular la diferencia en meses entre dos fechas o fechas con hora; por ejemplo, toRelativeMonthNum(dt1) - toRelativeMonthNum(dt2).

Sintaxis

toRelativeMonthNum(date)

Argumentos

Valor devuelto

Devuelve el número de meses desde un punto de referencia fijo en el pasado. UInt32

Ejemplos

Obtener números relativos de meses

SELECT toRelativeMonthNum(toDate('2023-04-01')) - toRelativeMonthNum(toDate('2023-01-01')) AS months_difference
┌─months_difference─┐
│                 3 │
└───────────────────┘

toRelativeQuarterNum

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en el número de trimestres transcurridos desde un determinado punto fijo del pasado. El momento exacto es un detalle de implementación y, por lo tanto, esta función no está pensada para usarse de forma independiente. El propósito principal de la función es calcular la diferencia en trimestres entre dos fechas o fechas con hora; por ejemplo, toRelativeQuarterNum(dt1) - toRelativeQuarterNum(dt2).

Sintaxis

toRelativeQuarterNum(date)

Argumentos

Valor devuelto

Devuelve el número de trimestres desde un punto de referencia fijo en el pasado. UInt32

Ejemplos

Obtener números de trimestre relativos

SELECT toRelativeQuarterNum(toDate('2023-04-01')) - toRelativeQuarterNum(toDate('2023-01-01')) AS quarters_difference
┌─quarters_difference─┐
│                   1 │
└─────────────────────┘

toRelativeSecondNum

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en el número de segundos transcurridos desde un determinado punto fijo del pasado. El punto exacto en el tiempo es un detalle de implementación y, por lo tanto, esta función no está pensada para usarse por sí sola. La finalidad principal de la función es calcular la diferencia en segundos entre dos fechas o fechas con hora; por ejemplo, toRelativeSecondNum(dt1) - toRelativeSecondNum(dt2).

Sintaxis

toRelativeSecondNum(date)

Argumentos

Valor devuelto

Devuelve el número de segundos desde un punto de referencia fijo en el pasado. UInt32

Ejemplos

Obtener números de segundos relativos

SELECT toRelativeSecondNum(toDateTime('2023-01-01 00:01:00')) - toRelativeSecondNum(toDateTime('2023-01-01 00:00:00')) AS seconds_difference
┌─seconds_difference─┐
│                 60 │
└────────────────────┘

toRelativeWeekNum

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en el número de semanas transcurridas desde un determinado punto fijo del pasado. El momento exacto es un detalle de implementación y, por lo tanto, esta función no está pensada para usarse de forma independiente. La finalidad principal de esta función es calcular la diferencia en semanas entre dos fechas o fechas con hora; por ejemplo, toRelativeWeekNum(dt1) - toRelativeWeekNum(dt2).

Sintaxis

toRelativeWeekNum(date)

Argumentos

Valor devuelto

Devuelve el número de semanas desde un punto de referencia fijo en el pasado. UInt32

Ejemplos

Obtener números de semana relativos

SELECT toRelativeWeekNum(toDate('2023-01-08')) - toRelativeWeekNum(toDate('2023-01-01')) AS weeks_difference
┌─weeks_difference─┐
│                1 │
└──────────────────┘

toRelativeYearNum

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en el número de años transcurridos desde un punto fijo determinado en el pasado. El momento exacto es un detalle de implementación y, por lo tanto, esta función no está pensada para usarse de forma independiente. El propósito principal de la función es calcular la diferencia en años entre dos fechas o fechas con hora, por ejemplo, toRelativeYearNum(dt1) - toRelativeYearNum(dt2).

Sintaxis

toRelativeYearNum(date)

Argumentos

Valor devuelto

Devuelve el número de años desde un punto de referencia fijo en el pasado. UInt16

Ejemplos

Obtener números relativos de año

SELECT toRelativeYearNum('2010-10-01'::DateTime) - toRelativeYearNum('2000-01-01'::DateTime)
┌─minus(toRelativeYearNum(CAST('2010-10-01', 'DateTime')), toRelativeYearNum(CAST('2000-01-01', 'DateTime')))─┐
│                                                                                                          10 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

toSecond

Introducido en: v1.1.0

Devuelve el componente de segundo (0-59) de un valor DateTime o DateTime64.

Sintaxis

toSecond(datetime)

Alias: SECOND

Argumentos

Valor devuelto

Devuelve el segundo del minuto (0 - 59) de datetime. UInt8

Ejemplos

Ejemplo de uso

SELECT toSecond(toDateTime('2023-04-21 10:20:30'))
┌─toSecond(toDateTime('2023-04-21 10:20:30'))─┐
│                                          30 │
└─────────────────────────────────────────────┘

toStartOfDay

Introducido en: v1.1.0

redondea hacia abajo una fecha con hora hasta el inicio del día.

Sintaxis

toStartOfDay(datetime)

Argumentos

  • datetime — Una fecha o una fecha con hora que se va a redondear. Date o DateTime

Valor devuelto

Devuelve la fecha con hora redondeada hacia abajo hasta el inicio del día. DateTime o DateTime64

Ejemplos

Redondear hacia abajo hasta el inicio del día

SELECT toStartOfDay(toDateTime('2023-04-21 10:20:30'))
┌─toStartOfDay(toDateTime('2023-04-21 10:20:30'))─┐
│                             2023-04-21 00:00:00 │
└─────────────────────────────────────────────────┘

toStartOfFifteenMinutes

Introducido en: v1.1.0

Redondea la fecha con hora hacia abajo hasta el inicio del intervalo de quince minutos.

Sintaxis

toStartOfFifteenMinutes(datetime)

Argumentos

Valor devuelto

Devuelve la fecha con hora redondeada al inicio del intervalo de quince minutos más cercano. DateTime o DateTime64

Ejemplos

Ejemplo

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

toStartOfFiveMinutes

Introducido en: v22.6.0

Redondea hacia abajo una fecha con hora al inicio del intervalo de cinco minutos más cercano.

Sintaxis

toStartOfFiveMinutes(datetime)

Alias: toStartOfFiveMinute

Argumentos

Valor devuelto

Devuelve la fecha con hora redondeada al inicio del intervalo de cinco minutos más cercano. DateTime o DateTime64

Ejemplos

Ejemplo

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

toStartOfHour

Introducido en: v1.1.0

redondea hacia abajo una fecha con hora hasta el inicio de la hora.

Sintaxis

toStartOfHour(datetime)

Argumentos

Valor devuelto

Devuelve la fecha con hora redondeada hacia abajo al inicio de la hora. DateTime o DateTime64

Ejemplos

Redondear hacia abajo al inicio de la hora

SELECT
    toStartOfHour(toDateTime('2023-04-21 10:20:30'));
┌─toStartOfHour(toDateTime('2023-04-21 10:20:30'))─┐
│                              2023-04-21 10:00:00 │
└──────────────────────────────────────────────────┘

toStartOfISOYear

Introducido en: v1.1.0

Redondea hacia abajo una fecha o fecha con hora hasta el primer día del año ISO, que puede diferir de un año natural normal. Consulte la fecha de semana ISO.

Sintaxis

toStartOfISOYear(value)

Argumentos

Valor devuelto

Devuelve el primer día del año ISO correspondiente a la fecha o fecha con hora proporcionada. Date

Ejemplos

Redondear al primer día del año ISO

SELECT toStartOfISOYear(toDateTime('2023-04-21 10:20:30'))
┌─toStartOfISOYear(toDateTime('2023-04-21 10:20:30'))─┐
│                                          2023-01-02 │
└─────────────────────────────────────────────────────┘

toStartOfInterval

Introducido en: v20.1.0

Esta función generaliza otras funciones toStartOf*() mediante la sintaxis toStartOfInterval(date_or_date_with_time, INTERVAL x unit [, time_zone]).

Por ejemplo:

  • toStartOfInterval(t, INTERVAL 1 YEAR) devuelve lo mismo que toStartOfYear(t),
  • toStartOfInterval(t, INTERVAL 1 MONTH) devuelve lo mismo que toStartOfMonth(t),
  • toStartOfInterval(t, INTERVAL 1 DAY) devuelve lo mismo que toStartOfDay(t),
  • toStartOfInterval(t, INTERVAL 15 MINUTE) devuelve lo mismo que toStartOfFifteenMinutes(t).

El cálculo se realiza con respecto a momentos concretos:

Intervalo Inicio
YEAR año 0
QUARTER 1900 T1
MONTH enero de 1900
WEEK 1970, 1.ª semana (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
(*) los intervalos de horas son especiales: el cálculo siempre se realiza con respecto a las 00:00:00 (medianoche) del día actual. Como resultado, solo
los valores de hora entre 1 y 23 son útiles.

Si se especifica la unidad WEEK, toStartOfInterval asume que las semanas empiezan en lunes. Tenga en cuenta que este comportamiento es distinto del de la función toStartOfWeek, en la que las semanas empiezan en domingo de forma predeterminada.

La segunda sobrecarga emula la función time_bucket() de TimescaleDB y, de forma equivalente, la función date_bin() de PostgreSQL.

Sintaxis

toStartOfInterval(value, INTERVAL x unit[, time_zone])
toStartOfInterval(value, INTERVAL x unit[, origin[, time_zone]])

Alias: date_bin, time_bucket

Argumentos

  • value — Valor de fecha o de fecha con hora que se redondea hacia abajo. Date o DateTime o DateTime64
  • x — Longitud numérica del intervalo. - unit — Unidad de intervalo: YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, NANOSECOND. - time_zone — Opcional. Nombre de la zona horaria como cadena. - origin — Opcional. Punto de origen para el cálculo (solo en la segunda sobrecarga).

Valor devuelto

Devuelve el inicio del intervalo que contiene el valor de entrada. DateTime

Ejemplos

Redondeo básico de intervalos

SELECT toStartOfInterval(toDateTime('2023-01-15 14:30:00'), INTERVAL 1 MONTH)
┌─toStartOfInterval(toDateTime('2023-01-15 14:30:00'), toIntervalMonth(1))─┐
│                                                               2023-01-01 │
└──────────────────────────────────────────────────────────────────────────┘

Uso del punto de origen

SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'))
┌─toStartOfInterval(toDateTime('2023-01-01 14:45:00'), toIntervalMinute(1), toDateTime('2023-01-01 14:35:30'))─┐
│                                                                                          2023-01-01 14:44:30 │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

toStartOfMicrosecond

Introducido en: v22.6.0

Redondea hacia abajo una fecha con hora al inicio del microsegundo.

Sintaxis

toStartOfMicrosecond(datetime[, timezone])

Argumentos

  • datetime — Fecha y hora. DateTime64
  • timezone — Opcional. Zona horaria del valor devuelto. Si no se especifica, la función usa la zona horaria del parámetro value. String

Valor devuelto

Valor de entrada con submicrosegundos DateTime64

Ejemplos

Consulta sin zona horaria

WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMicrosecond(dt64);
┌────toStartOfMicrosecond(dt64)─┐
│ 2020-01-01 10:20:30.999999000 │
└───────────────────────────────┘

Consulta con zona horaria

WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMicrosecond(dt64, 'Asia/Istanbul');
┌─toStartOfMicrosecond(dt64, 'Asia/Istanbul')─┐
│               2020-01-01 13:20:30.999999000 │
└─────────────────────────────────────────────┘

toStartOfMillisecond

Introducido en: v22.6.0

Redondea hacia abajo una fecha con hora hasta el inicio del milisegundo.

Sintaxis

toStartOfMillisecond(datetime[, timezone])

Argumentos

  • datetime — Fecha y hora. DateTime64
  • timezone — Opcional. Zona horaria del valor devuelto. Si no se especifica, la función usa la zona horaria del parámetro value. String

Valor devuelto

Valor de entrada con fracciones de milisegundo. DateTime64

Ejemplos

Consulta sin zona horaria

WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMillisecond(dt64);
┌────toStartOfMillisecond(dt64)─┐
│ 2020-01-01 10:20:30.999000000 │
└───────────────────────────────┘

Consulta con zona horaria

WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMillisecond(dt64, 'Asia/Istanbul');
┌─toStartOfMillisecond(dt64, 'Asia/Istanbul')─┐
│               2020-01-01 13:20:30.999000000 │
└─────────────────────────────────────────────┘

toStartOfMinute

Introducido en: v1.1.0

Redondea hacia abajo una fecha con hora al inicio del minuto.

Sintaxis

toStartOfMinute(datetime)

Argumentos

Valor devuelto

Devuelve la fecha con hora redondeada hacia abajo al inicio del minuto. DateTime o DateTime64

Ejemplos

Redondear hacia abajo al inicio del minuto

SELECT
    toStartOfMinute(toDateTime('2023-04-21 10:20:30')),
    toStartOfMinute(toDateTime64('2023-04-21 10:20:30.5300', 8))
FORMAT Vertical
Row 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

toStartOfMonth

Introducido en: v1.1.0

redondea hacia abajo una fecha o una fecha con hora al primer día del mes.

Sintaxis

toStartOfMonth(value)

Argumentos

Valor devuelto

Devuelve el primer día del mes correspondiente a la fecha o fecha con hora dada. Date

Ejemplos

Redondear hacia abajo hasta el primer día del mes

SELECT toStartOfMonth(toDateTime('2023-04-21 10:20:30'))
┌─toStartOfMonth(toDateTime('2023-04-21 10:20:30'))─┐
│                                        2023-04-01 │
└───────────────────────────────────────────────────┘

toStartOfNanosecond

Introducido en: v22.6.0

Redondea hacia abajo una fecha con hora hasta el inicio del nanosegundo.

Sintaxis

toStartOfNanosecond(datetime[, timezone])

Argumentos

  • datetime — Fecha y hora. DateTime64
  • timezone — Opcional. Zona horaria del valor devuelto. Si no se especifica, la función utiliza la zona horaria del parámetro value. String

Valor devuelto

Valor de entrada con nanosegundos. DateTime64

Ejemplos

Consulta sin zona horaria

WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfNanosecond(dt64);
┌─────toStartOfNanosecond(dt64)─┐
│ 2020-01-01 10:20:30.999999999 │
└───────────────────────────────┘

Consulta con zona horaria

WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfNanosecond(dt64, 'Asia/Istanbul');
┌─toStartOfNanosecond(dt64, 'Asia/Istanbul')─┐
│              2020-01-01 13:20:30.999999999 │
└────────────────────────────────────────────┘

toStartOfQuarter

Introducido en: v1.1.0

redondea hacia abajo una fecha o fecha con hora hacia abajo hasta el primer día del trimestre. El primer día del trimestre es el 1 de enero, el 1 de abril, el 1 de julio o el 1 de octubre.

Sintaxis

toStartOfQuarter(value)

Argumentos

Valor devuelto

Devuelve el primer día del trimestre para la fecha o fecha con hora proporcionada. Date

Ejemplos

Redondear al primer día del trimestre

SELECT toStartOfQuarter(toDateTime('2023-04-21 10:20:30'))
┌─toStartOfQuarter(toDateTime('2023-04-21 10:20:30'))─┐
│                                          2023-04-01 │
└─────────────────────────────────────────────────────┘

toStartOfSecond

Introducido en: v20.5.0

Redondea hacia abajo una fecha con hora al inicio del segundo.

Sintaxis

toStartOfSecond(datetime[, timezone])

Argumentos

  • datetime — Fecha y hora de la que se truncarán las fracciones de segundo. DateTime64
  • timezone — Opcional. Zona horaria del valor devuelto. Si no se especifica, la función usa la zona horaria del parámetro value. String

Valor devuelto

Devuelve el valor de entrada sin fracciones de segundo. DateTime64

Ejemplos

Consulta sin zona horaria

WITH toDateTime64('2020-01-01 10:20:30.999', 3) AS dt64
SELECT toStartOfSecond(dt64);
┌───toStartOfSecond(dt64)─┐
│ 2020-01-01 10:20:30.000 │
└─────────────────────────┘

Consulta con zona horaria

WITH toDateTime64('2020-01-01 10:20:30.999', 3) AS dt64
SELECT toStartOfSecond(dt64, 'Asia/Istanbul');
┌─toStartOfSecond(dt64, 'Asia/Istanbul')─┐
│                2020-01-01 13:20:30.000 │
└────────────────────────────────────────┘

toStartOfTenMinutes

Introducido en: v20.1.0

Redondea una fecha con hora hacia abajo hasta el inicio del intervalo de diez minutos más cercano.

Sintaxis

toStartOfTenMinutes(datetime)

Argumentos

Valor devuelto

Devuelve la fecha con hora redondeadas al inicio del intervalo de diez minutos más cercano. DateTime o DateTime64

Ejemplos

Ejemplo

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

toStartOfWeek

Introducido en: v20.1.0

Redondea una fecha o una fecha con hora al domingo o lunes más cercano anterior.

Sintaxis

toStartOfWeek(datetime[, mode[, timezone]])

Argumentos

  • datetime — Una fecha o una fecha con hora que se va a convertir. Date o DateTime o Date32 o DateTime64
  • mode — Determina el primer día de la semana, como se describe en la función toWeek(). El valor predeterminado es 0. UInt8
  • timezone — La zona horaria que se usará para la conversión. Si no se especifica, se usa la zona horaria del servidor. String

Valor devuelto

Devuelve la fecha del domingo o lunes más cercano que coincida con la fecha dada o la preceda, según el modo. Date o Date32

Ejemplos

Redondear hacia abajo al domingo o lunes más cercano

SELECT
        toStartOfWeek(toDateTime('2023-04-21 10:20:30')), /* a Friday */
        toStartOfWeek(toDateTime('2023-04-21 10:20:30'), 1), /* a Friday */
        toStartOfWeek(toDate('2023-04-24')), /* a Monday */
        toStartOfWeek(toDate('2023-04-24'), 1) /* a Monday */
    FORMAT Vertical
Fila 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

toStartOfYear

Introducido en: v1.1.0

Redondea hacia abajo una fecha o una fecha con hora hasta el primer día del año. Devuelve la fecha como un objeto Date.

Sintaxis

toStartOfYear(value)

Argumentos

Valor devuelto

Devuelve el primer día del año de la fecha/hora proporcionada Date

Ejemplos

Redondeo a la baja al primer día del año

SELECT toStartOfYear(toDateTime('2023-04-21 10:20:30'))
┌─toStartOfYear(toDateTime('2023-04-21 10:20:30'))─┐
│                                       2023-01-01 │
└──────────────────────────────────────────────────┘

toTimeWithFixedDate

Introducido en: v25.5.0

Extrae el componente de hora de una fecha con hora. El resultado devuelto es un desplazamiento respecto a un momento fijo, actualmente 1970-01-02, pero el momento exacto es un detalle de implementación que puede cambiar en el futuro.

Por lo tanto, toTimeWithFixedDate no debe usarse de forma independiente. La función se utiliza principalmente para calcular la diferencia horaria entre dos fechas con hora; por ejemplo, toTimeWithFixedDate(dt1) - toTimeWithFixedDate(dt2).

Esta es la función heredada toTime, renombrada en v25.5 porque el nombre toTime ahora lo utiliza toTime, que convierte valores al tipo de datos Time. Sigue estando disponible con su antiguo nombre, toTime, cuando la configuración use_legacy_to_time está habilitada (su valor predeterminado es 0 desde v26.7, pero era 1 entre v25.6 y v26.6).

Si el argumento datetime tiene componentes inferiores a un segundo, se descartan en el valor DateTime devuelto, que tiene precisión de segundos.

Sintaxis

toTimeWithFixedDate(datetime[, timezone])

Argumentos

  • datetime — Fecha con hora que se convertirá en una hora. DateTime o DateTime64
  • timezone — Opcional. Zona horaria del valor devuelto. String

Valor devuelto

Devuelve el componente de hora de una fecha con hora como un desplazamiento respecto a un momento fijo (actualmente, 1970-01-02). DateTime

Ejemplos

Calcular la diferencia horaria entre dos fechas

SELECT toTimeWithFixedDate('2025-06-15 12:00:00'::DateTime) - toTimeWithFixedDate('2024-05-10 11:00:00'::DateTime) AS result, toTypeName(result)
┌─result─┬─toTypeName(result)─┐
│   3600 │ Int32              │
└────────┴────────────────────┘

Se descartan los componentes de subsegundos

SELECT toTimeWithFixedDate(toDateTime64('1970-12-10 01:20:30.3000', 3)) AS result, toTypeName(result)
┌──────────────result─┬─toTypeName(result)─┐
│ 1970-01-02 01:20:30 │ DateTime           │
└─────────────────────┴────────────────────┘

La misma función llamada por su nombre legacy

SET use_legacy_to_time = 1;
SELECT toTime(toDateTime64('1970-12-10 01:20:30.3000', 3)) AS result, toTypeName(result)
┌──────────────result─┬─toTypeName(result)─┐
│ 1970-01-02 01:20:30 │ DateTime           │
└─────────────────────┴────────────────────┘

toTimezone

Introducido en: v1.1.0

Convierte un DateTime o DateTime64 a la zona horaria especificada. El valor interno (número de segundos de Unix) del dato no cambia. Solo cambian el atributo de zona horaria del valor y su representación en cadena.

Sintaxis

toTimezone(datetime, timezone)

Aliases: toTimeZone

Argumentos

  • date — El valor que se convertirá. DateTime o DateTime64
  • timezone — El nombre de la zona horaria de destino. String

Valor devuelto

Devuelve la misma marca de tiempo que la de entrada, pero con la zona horaria especificada DateTime o DateTime64

Ejemplos

Ejemplo de uso

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

toUTCTimestamp

Introducido en: v23.8.0

Convierte un valor de fecha o de fecha con hora de una zona horaria a una marca temporal UTC. Esta función se incluye principalmente por compatibilidad con Apache Spark y frameworks similares.

Sintaxis

toUTCTimestamp(datetime, time_zone)

Alias: to_utc_timestamp

Argumentos

  • datetime — Un valor constante de tipo fecha o fecha con hora, o una expresión. DateTime o DateTime64
  • time_zone — Un valor constante de tipo String, o una expresión que representa la zona horaria. String

Valor devuelto

Devuelve una fecha o fecha con hora en la zona horaria UTC. DateTime o DateTime64

Ejemplos

Convertir la zona horaria a UTC

SELECT toUTCTimestamp(toDateTime('2023-03-16'), 'Asia/Shanghai')
┌─toUTCTimestamp(toDateTime('2023-03-16'), 'Asia/Shanghai')─┐
│                                       2023-03-15 16:00:00 │
└───────────────────────────────────────────────────────────┘

toUnixTimestamp

Introducido en: v1.1.0

Convierte un String, Date o DateTime en un timestamp Unix (segundos desde 1970-01-01 00:00:00 UTC) como un UInt32.

Sintaxis

toUnixTimestamp(date[, timezone])

Argumentos

  • date — Valor que se va a convertir. Date o Date32 o DateTime o DateTime64 o String
  • timezone — Opcional. Zona horaria que se utilizará para la conversión. Si no se especifica, se usa la zona horaria del servidor. String

Valor devuelto

Devuelve la marca de tiempo Unix. UInt32

Ejemplos

Ejemplo de uso

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

toWeek

Introducido en: v20.1.0

Esta función devuelve el número de semana de una fecha o fecha con hora. La forma de dos argumentos de toWeek() permite especificar si la semana comienza en domingo o lunes y si el valor devuelto debe estar en el rango de 0 a 53 o de 1 a 53.

toISOWeek() es una función de compatibilidad equivalente a toWeek(date,3).

La siguiente tabla describe cómo funciona el argumento mode.

Mode First day of week Range Week 1 is the first week …
0 Sunday 0-53 with a Sunday in this year
1 Monday 0-53 with 4 or more days this year
2 Sunday 1-53 with a Sunday in this year
3 Monday 1-53 with 4 or more days this year
4 Sunday 0-53 with 4 or more days this year
5 Monday 0-53 with a Monday in this year
6 Sunday 1-53 with 4 or more days this year
7 Monday 1-53 with a Monday in this year
8 Sunday 1-53 contains January 1
9 Monday 1-53 contains January 1

Para los valores de mode con el significado de "con 4 o más días en este año", las semanas se numeran según ISO 8601:1988:

  • Si la semana que contiene el 1 de enero tiene 4 o más días en el nuevo año, es la semana 1.
  • En caso contrario, es la última semana del año anterior, y la semana siguiente es la semana 1.

Para los valores de mode con el significado de "contiene el 1 de enero", la semana que contiene el 1 de enero es la semana 1. No importa cuántos días del nuevo año contenga esa semana, aunque contenga solo un día. Es decir, si la última semana de diciembre contiene el 1 de enero del año siguiente, será la semana 1 del año siguiente.

El primer argumento también puede especificarse como String en un formato compatible con parseDateTime64BestEffort. La compatibilidad con argumentos de tipo cadena existe solo por motivos de compatibilidad con MySQL, ya que ciertas herramientas de 3rd party la requieren. Como la compatibilidad con argumentos de tipo cadena puede pasar a depender en el futuro de nuevas configuraciones de compatibilidad con MySQL y, además, el análisis de cadenas suele ser lento, se recomienda no usarla.

Sintaxis

toWeek(datetime[, mode[, time_zone]])

Alias: week

Argumentos

  • datetime — Fecha o fecha con hora a partir de la cual se obtiene el número de semana. Date o DateTime
  • mode — Opcional. Un valor de 0 a 9 determina el primer día de la semana y el rango del número de semana. Valor predeterminado: 0. - time_zone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el número de semana según el modo especificado. UInt32

Ejemplos

Obtener el número de semana con diferentes modos

SELECT toDate('2016-12-27') AS date, toWeek(date) AS week0, toWeek(date,1) AS week1, toWeek(date,9) AS week9
┌───────date─┬─week0─┬─week1─┬─week9─┐
│ 2016-12-27 │    52 │    52 │     1 │
└────────────┴───────┴───────┴───────┘

toYYYYMM

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en un número UInt32 que contiene el año y el número del mes (YYYY * 100 + MM). Acepta un segundo argumento opcional de zona horaria. Si se especifica, la zona horaria debe ser una constante de cadena.

Esta función es la inversa de la función YYYYMMDDToDate().

Sintaxis

toYYYYMM(datetime[, timezone])

Argumentos

  • datetime — Una fecha o una fecha con hora para convertir. Date o Date32 o DateTime o DateTime64
  • timezone — Opcional. Zona horaria para la conversión. Si se proporciona, la zona horaria debe ser una constante de cadena. String

Valor devuelto

Devuelve un número UInt32 que contiene el año y el número del mes (YYYY * 100 + MM). UInt32

Ejemplos

Convertir la fecha actual al formato YYYYMM

SELECT toYYYYMM(now(), 'US/Eastern')
┌─toYYYYMM(now(), 'US/Eastern')─┐
│                        202608 │
└───────────────────────────────┘

toYYYYMMDD

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en un número UInt32 que contiene el año, el mes y el día (YYYY * 10000 + MM * 100 + DD). Acepta un segundo argumento opcional de zona horaria. Si se proporciona, la zona horaria debe ser una constante de cadena.

Sintaxis

toYYYYMMDD(datetime[, timezone])

Argumentos

  • datetime — Una fecha o una fecha con hora que se va a convertir. Date o Date32 o DateTime o DateTime64
  • timezone — Opcional. Zona horaria para la conversión. Si se especifica, la zona horaria debe ser una constante de cadena. String

Valor devuelto

Devuelve un valor UInt32 que contiene el año, el mes y el día (YYYY * 10000 + MM * 100 + DD). UInt32

Ejemplos

Convertir una fecha al formato YYYYMMDD en otra zona horaria

SELECT toYYYYMMDD(toDateTime('2026-01-02 03:04:05', 'UTC'), 'US/Eastern')
┌─toYYYYMMDD(toDateTime('2026-01-02 03:04:05', 'UTC'), 'US/Eastern')─┐
│                                                           20260101 │
└────────────────────────────────────────────────────────────────────┘

toYYYYMMDDhhmmss

Introducido en: v1.1.0

Convierte una fecha o una fecha con hora en un número UInt64 que contiene el año, el mes y el día (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss). Acepta un segundo argumento opcional de zona horaria. Si se proporciona, la zona horaria debe ser una constante de cadena.

Sintaxis

toYYYYMMDDhhmmss(datetime[, timezone])

Argumentos

  • datetime — Fecha o fecha con hora que se va a convertir. Date o Date32 o DateTime o DateTime64
  • timezone — Opcional. Zona horaria para la conversión. Si se proporciona, la zona horaria debe ser una constante de cadena. String

Valor devuelto

Devuelve un número UInt64 que contiene el año, el mes, el día, la hora, el minuto y el segundo (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss). UInt64

Ejemplos

Convertir una fecha y hora al formato YYYYMMDDhhmmss

SELECT toYYYYMMDDhhmmss(toDateTime('2023-03-02 16:22:09', 'UTC'), 'US/Eastern')
┌─toYYYYMMDDhhmmss(toDateTime('2023-03-02 16:22:09', 'UTC'), 'US/Eastern')─┐
│                                                           20230302112209 │
└──────────────────────────────────────────────────────────────────────────┘

toYear

Introducido en: v1.1.0

Devuelve el componente de año (d. C.) de un valor Date o DateTime.

Sintaxis

toYear(datetime)

Alias: YEAR

Argumentos

Valor devuelto

Devuelve el año de la Date o DateTime proporcionada UInt16

Ejemplos

Ejemplo de uso

SELECT toYear(toDateTime('2023-04-21 10:20:30'))
┌─toYear(toDateTime('2023-04-21 10:20:30'))─┐
│                                      2023 │
└───────────────────────────────────────────┘

toYearNumSinceEpoch

Introducido en: v25.3.0

Devuelve el número de años transcurridos desde 1970

Sintaxis

toYearNumSinceEpoch(date)

Argumentos

Valor devuelto

Entero positivo

Ejemplos

Ejemplo

SELECT toYearNumSinceEpoch(toDate('2024-10-01'))
54

toYearWeek

Introduced in: v20.1.0

Devuelve el año y la semana de una fecha. El año del resultado puede ser distinto del año del argumento de fecha en la primera y la última semana del año.

El argumento mode funciona igual que el argumento mode de toWeek().

Advertencia: El número de semana que devuelve toYearWeek() puede ser diferente del que devuelve toWeek(). toWeek() siempre devuelve el número de semana en el contexto del año indicado y, si toWeek() devuelve 0, toYearWeek() devuelve el valor correspondiente a la última semana del año anterior. Consulte prev_yearWeek en el ejemplo siguiente.

El primer argumento también puede especificarse como String en un formato compatible con parseDateTime64BestEffort. La compatibilidad con argumentos de cadena existe solo por motivos de compatibilidad con MySQL, ya que determinadas herramientas de 3rd party la requieren. Como en el futuro la compatibilidad con argumentos de cadena podría pasar a depender de nuevas configuraciones de compatibilidad con MySQL y, además, el análisis de cadenas suele ser lento, se recomienda no usarla.

Sintaxis

toYearWeek(datetime[, mode[, timezone]])

Alias: yearweek

Argumentos

  • datetime — Fecha o fecha con hora de la que se obtienen el año y la semana. Date o DateTime
  • mode — Opcional. Un valor de 0 a 9 que determina el primer día de la semana y el rango del número de semana. El valor predeterminado es 0. - timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el año y el número de semana como un único valor entero. UInt32

Ejemplos

Obtener combinaciones de año-semana con distintos modos

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
┌───────date─┬─yearWeek0─┬─yearWeek1─┬─yearWeek9─┬─prev_yearWeek─┐
│ 2016-12-27 │    201652 │    201652 │    201701 │        202152 │
└────────────┴───────────┴───────────┴───────────┴───────────────┘

today

Introducido en: v1.1.0

Devuelve la fecha actual en el momento del análisis de la consulta. Igual que toDate(now()).

Sintaxis

today()

Alias: current_date, curdate

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la fecha actual Date

Ejemplos

Ejemplo de uso

SELECT today() AS today, curdate() AS curdate, current_date() AS current_date FORMAT Pretty
┏━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃      today ┃    curdate ┃ current_date ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ 2026-08-02 │ 2026-08-02 │   2026-08-02 │
└────────────┴────────────┴──────────────┘

Sintaxis SQL estándar sin paréntesis

SELECT TODAY, CURDATE,CURRENT_DATE
┌──────TODAY─┬────CURDATE─┬─CURRENT_DATE─┐
│ 2026-08-02 │ 2026-08-02 │   2026-08-02 │
└────────────┴────────────┴──────────────┘

yesterday

Introducido en: v1.1.0

No acepta argumentos y devuelve la fecha de ayer en uno de los puntos del análisis de la consulta.

Sintaxis

yesterday()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la fecha de ayer. Date

Ejemplos

Obtener la fecha de ayer

SELECT yesterday();
SELECT today() - 1;
┌─yesterday()─┐
│  2026-08-01 │
└─────────────┘
┌─minus(today(), 1)─┐
│        2026-08-01 │
└───────────────────┘
Navigation