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 │
└─────────────────────┴────────────┴────────────┴─────────────────────┘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*oFloat*oDecimaltimezone— 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*oFloat*oDecimalprecision— Precisión de la parte fraccionaria (0-9).UInt8timezone— 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
datetime— La fecha o fecha con hora a la que se sumainterval.DateorDate32orDateTimeorDateTime64orStringinterval— Intervalo que se va a sumar.Interval
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
datetime— Fecha o fecha con hora a la que se debe sumar el número especificado de días.DateoDate32oDateTimeoDateTime64oStringnum— Número de días que se deben sumar.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se añadirá el número especificado de horas.DateoDate32oDateTimeoDateTime64oStringnum— Número de horas que se añadirán.(U)Int*oFloat*
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
interval_1— Primer intervalo o tupla de intervalos.IntervaloTuple(Interval)interval_2— Segundo intervalo que se suma.Interval
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.DateTimeoDateTime64oStringnum— Número de microsegundos que se añadirán.(U)Int*oFloat*
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.DateTimeoDateTime64oStringnum— Número de milisegundos que se añadirán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se añadirá el número especificado de minutos.DateoDate32oDateTimeoDateTime64oStringnum— Número de minutos que se añadirán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se añadirá el número de meses especificado.DateoDate32oDateTimeoDateTime64oStringnum— Número de meses que se añadirán.(U)Int*oFloat*
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.DateTimeoDateTime64oStringnum— Número de nanosegundos que se sumarán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se añadirá el número especificado de trimestres.DateoDate32oDateTimeoDateTime64oStringnum— Número de trimestres que se añadirán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se añadirá el número especificado de segundos.DateoDate32oDateTimeoDateTime64oStringnum— Número de segundos que se van a añadir.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se añaden intervalos.DateoDate32oDateTimeoDateTime64intervals— Tupla de intervalos que se añaden adatetime.Tuple(Interval)
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
datetime— Fecha o fecha con hora a la que se añade el número especificado de semanas.DateoDate32oDateTimeoDateTime64oStringnum— Número de semanas que se añaden.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se añadirá el número de años especificado.DateoDate32oDateTimeoDateTime64oStringnum— Número de años que se va a añadir.(U)Int*oFloat*
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).DateoDate32oDateTimeoDateTime64enddate— El segundo valor temporal del que se resta (el minuendo).DateoDate32oDateTimeoDateTime64timezone— 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
date_or_datetime— El valor que se debe cambiar.DateoDate32oDateTimeoDateTime64value— El valor nuevo.(U)Int*
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:00changeHour
Introducido en: v24.7.0
Cambia el componente de hora de una fecha o fecha y hora.
Sintaxis
changeHour(date_or_datetime, value)Argumentos
date_or_datetime— El valor que se va a modificar.DateoDate32oDateTimeoDateTime64value— El nuevo valor.(U)Int*
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:00changeMinute
Introducido en: v24.7.0
Cambia el componente de minutos de una fecha o fecha y hora.
Sintaxis
changeMinute(date_or_datetime, value)Argumentos
date_or_datetime— El valor que se va a modificar.DateoDate32oDateTimeoDateTime64value— El nuevo valor.(U)Int*
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:00changeMonth
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
date_or_datetime— El valor a cambiar.DateoDate32oDateTimeoDateTime64value— El nuevo valor.(U)Int*
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:00changeSecond
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
date_or_datetime— El valor que se modificará.DateoDate32oDateTimeoDateTime64value— El nuevo valor.(U)Int*
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:15changeYear
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
date_or_datetime— El valor a cambiar.DateoDate32oDateTimeoDateTime64value— El nuevo valor.(U)Int*
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:00dateDiff
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).DateoDate32oDateTimeoDateTime64enddate— El segundo valor de tiempo del que se resta (el minuendo).DateoDate32oDateTimeoDateTime64timezone— Opcional. Nombre de la zona horaria. Si se especifica, se aplica tanto astartdatecomo aenddate. Si no se especifica, se usan las zonas horarias destartdateyenddate. 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
date_part— La parte de la fecha que desea extraer.Stringdatetime— Un valor de fecha o de fecha con hora.DateoDate32oDateTimeoDateTime64timezone— Opcional. Zona horaria.String
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.Stringdatetime— Fecha y hora.DateoDate32oDateTimeoDateTime64timezone— Opcional. Nombre de la zona horaria del valordatetimedevuelto. Si no se especifica, la función usa la zona horaria del parámetrodatetime.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,
%fimprime 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,
%fimprime tantos dígitos como especifique la escala de DateTime64 en lugar de 6 dígitos fijos. - En versiones de ClickHouse anteriores a v23.4,
%Mimprime 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.DateoDate32oDateTimeoDateTime64format— Cadena de formato con campos de reemplazo.Stringtimezone— 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.DateTimeoDateoDate32oDateTime64format— Cadena de formato con campos de reemplazo de estilo Joda.Stringtimezone— 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.DateTimeoDateTime64time_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:
- Cuando se le proporciona un solo argumento de tipo
Integer, devuelve un valor de tipoDateTime, es decir, se comporta comotoDateTime. - Cuando se le proporcionan dos o tres argumentos, donde el primer argumento es un valor de tipo
Integer,Date,Date32,DateTimeoDateTime64, el segundo argumento es una cadena de formato constante y el tercer argumento es una cadena constante de zona horaria opcional, la función devuelve un valor de tipoString, es decir, se comporta comoformatDateTime. En este caso, se usa el estilo de formato de fecha y hora de MySQL.
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*oDateoDate32oDateTimeoDateTime64format— Opcional. Cadena de formato constante para dar formato a la salida.Stringtimezone— 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*oDateoDate32oDateTimeoDateTime64format— Opcional. Cadena de formato constante con sintaxis Joda para el formato de salida.Stringtimezone— 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
year— Número de año.(U)Int*oFloat*oDecimalmonth— Número de mes (1-12).(U)Int*oFloat*oDecimalday— Día del mes (1-31).(U)Int*oFloat*oDecimalday_of_year— Día del año (1-365).(U)Int*oFloat*oDecimal
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
year— Año.(U)Int*oFloat*oDecimalmonth— Número de mes (1-12).(U)Int*oFloat*oDecimalday— Día del mes (1-31).(U)Int*oFloat*oDecimalday_of_year— Día del año (1-365).(U)Int*oFloat*oDecimal
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
year— Año.(U)Int*oFloat*oDecimalmonth— Número de mes (1-12).(U)Int*oFloat*oDecimalday— Día del mes (1-31).(U)Int*oFloat*oDecimalhour— Hora (0-23).(U)Int*oFloat*oDecimalminute— Minuto (0-59).(U)Int*oFloat*oDecimalsecond— Segundo (0-59).(U)Int*oFloat*oDecimaltimezone— Nombre de la zona horaria.String
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
year— Número de año.(U)Int*oFloat*oDecimalmonth— Número de mes (1-12).(U)Int*oFloat*oDecimalday— Día del mes (1-31).(U)Int*oFloat*oDecimalhour— Hora (0-23).(U)Int*oFloat*oDecimalminute— Minuto (0-59).(U)Int*oFloat*oDecimalsecond— Segundo (0-59).(U)Int*oFloat*oDecimalfraction— Parte fraccionaria del segundo.(U)Int*oFloat*oDecimalprecision— Precisión de la parte fraccionaria (0-9).UInt8timezone— Nombre de la zona horaria.String
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
datetime— Fecha o fecha con componente de hora.DateoDate32oDateTimeoDateTime64
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).UInt8timezone— 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).UInt8timezone— 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
datetime— La fecha o la fecha con hora a la que se le restainterval.DateoDate32oDateTimeoDateTime64interval— Intervalo que se resta.Interval
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
datetime— Fecha o fecha con hora de la que se restará el número especificado de días.DateoDate32oDateTimeoDateTime64oStringnum— Número de días que se restarán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se le debe restar el número especificado de horas.DateoDate32oDateTimeoDateTime64oStringnum— Número de horas que se deben restar.(U)Int*oFloat*
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
interval_1— Primer intervalo o una tupla de intervalos.IntervaloTuple(Interval)interval_2— Segundo intervalo que debe negarse.Interval
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.DateTimeoDateTime64oStringnum— Número de microsegundos que se restará.(U)Int*oFloat*
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.DateTimeoDateTime64oStringnum— Número de milisegundos que se restarán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se le restará el número especificado de minutos.DateoDate32oDateTimeoDateTime64oStringnum— Número de minutos que se restarán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se restará el número especificado de meses.DateoDate32oDateTimeoDateTime64oStringnum— Número de meses que se restarán.(U)Int*oFloat*
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.DateTimeoDateTime64oStringnum— Cantidad de nanosegundos que se restará.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se restará el número especificado de trimestres.DateoDate32oDateTimeoDateTime64oStringnum— Número de trimestres que se restarán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se restará el número especificado de segundos.DateoDate32oDateTimeoDateTime64oStringnum— Número de segundos que se restarán.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora de la que se restarán intervalos.DateoDate32oDateTimeoDateTime64intervals— tupla de intervalos que se restarán dedatetime.Tuple(Interval)
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
datetime— Fecha o fecha con hora a la que se le restará el número especificado de semanas.DateoDate32oDateTimeoDateTime64oStringnum— Número de semanas que se restará.(U)Int*oFloat*
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
datetime— Fecha o fecha con hora a la que se le restará la cantidad especificada de años.DateoDate32oDateTimeoDateTime64oStringnum— Cantidad de años que se restará.(U)Int*oFloat*
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
startdate— El primer valor temporal que se resta (el sustraendo).DateoDate32oDateTimeoDateTime64enddate— El segundo valor temporal del que se resta (el minuendo).DateoDate32oDateTimeoDateTime64
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.DateTimeoDate32oDateTime64time_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.DateTimeoDateTime64Duration— Duración del intervalo en segundos.UInt32oDateTime64Size— Opcional. Tamaño de las franjas horarias en segundos. El valor predeterminado es 1800 (30 minutos).UInt32oDateTime64
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.Stringexpr_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 tipoDateTimeoDateTime64timezone— Opcional. Nombre de la zona horaria a la que convertir el valordatetime.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 deDateTimepara obtener el desplazamiento de la zona horaria.DateTimeoDateTime64
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
datetime— Fecha o fecha con hora de la que se obtiene el día del mes.DateoDate32oDateTimeoDateTime64
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.DateoDate32oDateTimeoDateTime64mode— Opcional. Entero que especifica el modo de semana (0-3). Si se omite, el valor predeterminado es 0.UInt8timezone— 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
datetime— Fecha o fecha con hora de la que se obtiene el día del año.DateoDate32oDateTimeoDateTime64
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
datetime— Fecha o fecha con hora a partir de la cual se obtiene el número de días del mes.DateoDate32oDateTimeoDateTime64
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.DateoDate32oDateTimeoDateTime64time_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
datetime— Fecha y hora de la que se extrae la hora.DateTimeoDateTime64
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
datetime— Fecha o fecha con hora de la que se obtiene el número de semana ISO.DateoDateTimeoDate32oDateTime64timezone— Opcional. Zona horaria.String
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
datetime— El valor con fecha o fecha y hora.DateoDate32oDateTimeoDateTime64
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
value— La fecha o fecha con hora que se debe redondear al último día del mes.DateoDate32oDateTimeoDateTime64
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.DateoDateTimeoDate32oDateTime64mode— Determina el primer día de la semana, tal como se describe en la funcióntoWeek(). Valor predeterminado:0.UInt8timezone— 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 VerticalRow 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-23toMicrosecond
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
datetime— Fecha con hora de la que se obtiene el milisegundo.DateTimeoDateTime64
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
datetime— Fecha y hora de la que se extrae el minuto.DateTimeoDateTime64
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
date— La fecha en formato de cadena.StringoFixedString
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
date— Fecha en formato de texto.StringoFixedString
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
value— Fecha o fecha con hora que se redondea hacia abajo hasta el lunes de esa semana.DateoDate32oDateTimeoDateTime64
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
datetime— Fecha o fecha con hora de la que se extrae el mes.DateoDate32oDateTimeoDateTime64
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
date— Una fecha o una fecha con hora.DateoDateTimeoDateTime64
Valor devuelto
Entero positivo
Ejemplos
Ejemplo
SELECT toMonthNumSinceEpoch(toDate('2024-10-01'))657toNanosecond
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
datetime— Fecha o fecha con hora de la que se obtiene el trimestre del año.DateoDate32oDateTimeoDateTime64
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
date— Fecha o fecha con hora.DateoDateTimeoDateTime64
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
date— Fecha o fecha con hora.DateoDateTimeoDateTime64
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
date— Fecha o fecha con hora.DateoDateTimeoDateTime64
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
date— Fecha o fecha con hora.DateoDateTimeoDateTime64
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
date— Fecha o fecha con hora.DateoDateTimeoDateTime64
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
date— Fecha o fecha y hora.DateoDateTimeoDateTime64
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
date— Fecha o fecha con hora.DateoDateTimeoDateTime64
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
date— Fecha o fecha con hora.DateoDateTimeoDateTime64
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
datetime— Fecha con hora de la que se obtiene el segundo.DateTimeoDateTime64
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
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
datetime— Una fecha o una fecha con hora para redondear.DateTimeoDateTime64
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 VerticalRow 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:00toStartOfFiveMinutes
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
datetime— Una fecha con hora que se va a redondear.DateTimeoDateTime64
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 VerticalRow 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:00toStartOfHour
Introducido en: v1.1.0
redondea hacia abajo una fecha con hora hasta el inicio de la hora.
Sintaxis
toStartOfHour(datetime)Argumentos
datetime— Una fecha con hora que se va a redondear.DateTimeoDateTime64
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
value— La fecha o fecha con hora que se debe redondear al primer día del año ISO.DateoDate32oDateTimeoDateTime64
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 quetoStartOfYear(t),toStartOfInterval(t, INTERVAL 1 MONTH)devuelve lo mismo quetoStartOfMonth(t),toStartOfInterval(t, INTERVAL 1 DAY)devuelve lo mismo quetoStartOfDay(t),toStartOfInterval(t, INTERVAL 15 MINUTE)devuelve lo mismo quetoStartOfFifteenMinutes(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.DateoDateTimeoDateTime64x— 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.DateTime64timezone— Opcional. Zona horaria del valor devuelto. Si no se especifica, la función usa la zona horaria del parámetrovalue.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.DateTime64timezone— Opcional. Zona horaria del valor devuelto. Si no se especifica, la función usa la zona horaria del parámetrovalue.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
datetime— Una fecha con hora que se va a redondear.DateTimeoDateTime64
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 VerticalRow 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:00toStartOfMonth
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
value— La fecha o fecha con hora que se redondea hacia abajo hasta el primer día del mes.DateoDate32oDateTimeoDateTime64
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.DateTime64timezone— Opcional. Zona horaria del valor devuelto. Si no se especifica, la función utiliza la zona horaria del parámetrovalue.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
value— La fecha o fecha con hora que se redondeará al primer día del trimestre.DateoDate32oDateTimeoDateTime64
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.DateTime64timezone— Opcional. Zona horaria del valor devuelto. Si no se especifica, la función usa la zona horaria del parámetrovalue.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
datetime— Una fecha con hora.DateTimeoDateTime64
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 VerticalRow 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:00toStartOfWeek
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.DateoDateTimeoDate32oDateTime64mode— Determina el primer día de la semana, como se describe en la funcióntoWeek(). El valor predeterminado es0.UInt8timezone— 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 VerticalFila 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-24toStartOfYear
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
value— La fecha o fecha con hora que se redondea a la baja.DateoDate32oDateTimeoDateTime64
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.DateTimeoDateTime64timezone— 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á.DateTimeoDateTime64timezone— 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: 1546300800toUTCTimestamp
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.DateTimeoDateTime64time_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.DateoDate32oDateTimeoDateTime64oStringtimezone— 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: 1509840000toWeek
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.DateoDateTimemode— Opcional. Un valor de0a9determina 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.DateoDate32oDateTimeoDateTime64timezone— 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.DateoDate32oDateTimeoDateTime64timezone— 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.DateoDate32oDateTimeoDateTime64timezone— 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
datetime— Fecha o fecha con hora de la que se obtiene el año.DateoDate32oDateTimeoDateTime64
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
date— Una fecha o una fecha con hora que se va a convertir.DateoDateTimeoDateTime64
Valor devuelto
Entero positivo
Ejemplos
Ejemplo
SELECT toYearNumSinceEpoch(toDate('2024-10-01'))54toYearWeek
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.DateoDateTimemode— Opcional. Un valor de0a9que determina el primer día de la semana y el rango del número de semana. El valor predeterminado es0. -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 │
└───────────────────┘