Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funciones de conversión de tipos

Problemas habituales con la conversión de datos

ClickHouse generalmente utiliza el mismo comportamiento que los programas en C++.

Las funciones to<type> y cast se comportan de manera diferente en algunos casos, por ejemplo con LowCardinality: cast elimina la propiedad LowCardinality, mientras que las funciones to<type> no. Lo mismo ocurre con Nullable; este comportamiento no es compatible con el estándar SQL y puede modificarse mediante la configuración cast_keep_nullable.

Ejemplo:

SELECT
    toTypeName(toLowCardinality('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type

Notas sobre las funciones toString

La familia de funciones toString permite convertir entre números, cadenas (pero no cadenas de longitud fija), fechas y valores de fecha y hora. Todas estas funciones aceptan un argumento.

  • Al convertir una cadena o a partir de una cadena, el valor se formatea o se analiza según las mismas reglas que en el formato TabSeparated (y en casi todos los demás formatos de texto). Si la cadena no se puede analizar, se lanza una excepción y se cancela la solicitud.
  • Al convertir fechas en números o viceversa, la fecha corresponde al número de días transcurridos desde el inicio de la época Unix.
  • Al convertir valores de fecha y hora en números o viceversa, el valor de fecha y hora corresponde al número de segundos transcurridos desde el inicio de la época Unix.
  • La función toString del argumento DateTime puede aceptar un segundo argumento String que contenga el nombre de la zona horaria, por ejemplo: Europe/Amsterdam. En este caso, la hora se formatea según la zona horaria especificada.

Notas sobre las funciones toDate/toDateTime

Los formatos de fecha y fecha con hora de las funciones toDate/toDateTime se definen de la siguiente manera:

YYYY-MM-DD
YYYY-MM-DD hh:mm:ss

Como excepción, si se convierte de tipos numéricos UInt32, Int32, UInt64 o Int64 a Date, y si el número es mayor o igual que 65536, este se interpreta como una marca de tiempo Unix (y no como un número de días) y se redondea a una fecha. Esto permite admitir el caso habitual de escribir toDate(unix_timestamp), que de otro modo sería un error y obligaría a escribir la forma más engorrosa toDate(toDateTime(unix_timestamp)).

La conversión entre una fecha y una fecha con hora se realiza de la forma natural: añadiendo una hora nula o eliminando la hora.

La conversión entre tipos numéricos utiliza las mismas reglas que las asignaciones entre distintos tipos numéricos en C++.

Ejemplo

Querysql
SELECT
    now() AS ts,
    time_zone,
    toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10
Responseresponse
┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam  │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra    │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan  │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens     │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast    │ 2023-09-08 20:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belgrade   │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Berlin     │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bratislava │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Brussels   │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bucharest  │ 2023-09-08 22:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘

Consulte también la función toUnixTimestamp.

CAST

Introducido en: v1.1.0

Convierte un valor a un tipo de dato especificado. A diferencia de la función reinterpret, CAST intenta generar el mismo valor en el tipo de destino. Si no es posible, se genera una excepción.

Sintaxis

CAST(x, T)
or CAST(x AS T)
or x::T

Argumentos

  • x — Un valor de cualquier tipo. Any
  • T — El tipo de dato de destino. String

Valor devuelto

Devuelve el valor convertido al tipo de dato de destino. Any

Ejemplos

Uso básico

SELECT CAST(42, 'String')
┌─CAST(42, 'String')─┐
│ 42                 │
└────────────────────┘

Uso de la sintaxis AS

SELECT CAST('2025-01-01' AS Date)
┌─CAST('2025-01-01', 'Date')─┐
│                 2025-01-01 │
└────────────────────────────┘

Uso de la sintaxis ::

SELECT '123'::UInt32
┌─CAST('123', 'UInt32')─┐
│                   123 │
└───────────────────────┘

DATE

Introducido en: v21.2.0

Convierte el argumento al tipo de dato Date. Es un alias de compatibilidad con MySQL para toDate. Se comporta igual que toDate.

Sintaxis

DATE(expr)

Argumentos

Valor devuelto

Devuelve un valor de tipo Date. Date

Ejemplos

Uso básico

SELECT DATE('2023-01-01')
2023-01-01

accurateCast

Introducido en: v1.1.0

Convierte un valor al tipo de dato especificado. A diferencia de CAST, accurateCast realiza una comprobación de tipos más estricta y lanza una excepción si la conversión provoca una pérdida de precisión de los datos o si la conversión no es posible.

Esta función es más segura que CAST, ya que evita la pérdida de precisión y las conversiones no válidas.

Sintaxis

accurateCast(x, T)

Argumentos

  • x — Un valor para convertir. Any
  • T — El nombre del tipo de dato de destino. String

Valor devuelto

Devuelve el valor convertido al tipo de dato de destino. Any

Ejemplos

Conversión correcta

SELECT accurateCast(42, 'UInt16')
┌─accurateCast(42, 'UInt16')─┐
│                         42 │
└────────────────────────────┘

De String a número

SELECT accurateCast('123.45', 'Float64')
┌─accurateCast('123.45', 'Float64')─┐
│                            123.45 │
└───────────────────────────────────┘

accurateCastOrDefault

Introducido en: v21.1.0

Convierte un valor a un tipo de dato especificado. Como accurateCast, pero devuelve un valor predeterminado en lugar de lanzar una excepción si la conversión no puede realizarse con precisión.

Si se proporciona un valor predeterminado como segundo argumento, debe ser del tipo de destino. Si no se proporciona ningún valor predeterminado, se utiliza el valor predeterminado del tipo de destino.

Sintaxis

accurateCastOrDefault(x, T[, default_value])

Argumentos

  • x — Un valor que se convertirá. Any
  • T — El nombre del tipo de dato de destino. const String
  • default_value — Opcional. Valor por defecto que se devuelve si la conversión falla. Any

Valor devuelto

Devuelve el valor convertido al tipo de dato de destino, o el valor por defecto si la conversión no es posible. Any

Ejemplos

Conversión correcta

SELECT accurateCastOrDefault(42, 'String')
┌─accurateCastOrDefault(42, 'String')─┐
│ 42                                  │
└─────────────────────────────────────┘

Conversión fallida con valor predeterminado explícito

SELECT accurateCastOrDefault('abc', 'UInt32', 999::UInt32)
┌─accurateCastOrDefault('abc', 'UInt32', CAST('999', 'UInt32'))─┐
│                                                           999 │
└───────────────────────────────────────────────────────────────┘

Conversión fallida con valor predeterminado implícito

SELECT accurateCastOrDefault('abc', 'UInt32')
┌─accurateCastOrDefault('abc', 'UInt32')─┐
│                                      0 │
└────────────────────────────────────────┘

accurateCastOrNull

Introducido en: v1.1.0

Convierte un valor a un tipo de dato especificado. Como accurateCast, pero devuelve NULL en lugar de generar una excepción si la conversión no puede realizarse con precisión.

Esta función combina la seguridad de accurateCast con un manejo adecuado de errores.

Sintaxis

accurateCastOrNull(x, T)

Argumentos

  • x — Un valor que se va a convertir. Any
  • T — El nombre del tipo de dato de destino. String

Valor devuelto

Devuelve el valor convertido al tipo de dato de destino, o NULL si la conversión no es posible. Any

Ejemplos

Conversión correcta

SELECT accurateCastOrNull(42, 'String')
┌─accurateCastOrNull(42, 'String')─┐
│ 42                               │
└──────────────────────────────────┘

Si la conversión falla, devuelve NULL

SELECT accurateCastOrNull('abc', 'UInt32')
┌─accurateCastOrNull('abc', 'UInt32')─┐
│                                ᴺᵁᴸᴸ │
└─────────────────────────────────────┘

formatRow

Introducido en: v20.7.0

Convierte expresiones arbitrarias en una cadena usando el formato indicado.

Sintaxis

formatRow(format, x, y, ...)

Argumentos

  • format — Formato de texto. Por ejemplo, CSV, TSV. String
  • x, y, ... — Expresiones. Any

Valor devuelto

Una cadena formateada. (en los formatos de texto, suele terminar con un carácter de nueva línea). String

Ejemplos

Uso básico

SELECT formatRow('CSV', number, 'good')
FROM numbers(3)
┌─formatRow('CSV', number, 'good')─┐
│ 0,"good"                        ↴│
│ 1,"good"                        ↴│
│ 2,"good"                        ↴│
└──────────────────────────────────┘

Con formato personalizado

SELECT formatRow('CustomSeparated', number, 'good')
FROM numbers(3)
SETTINGS format_custom_result_before_delimiter='<prefix>\n', format_custom_result_after_delimiter='<suffix>'
┌─formatRow('CustomSeparated', number, 'good')─┐
│ <prefix>                                    ↴│
│↳0	good                                     ↴│
│↳<suffix>                                     │
│ <prefix>                                    ↴│
│↳1	good                                     ↴│
│↳<suffix>                                     │
│ <prefix>                                    ↴│
│↳2	good                                     ↴│
│↳<suffix>                                     │
└──────────────────────────────────────────────┘

formatRowNoNewline

Introducido en: v20.7.0

Igual que formatRow, pero elimina el carácter de nueva línea de cada fila.

Convierte expresiones arbitrarias en una cadena con el formato especificado, pero elimina cualquier carácter de nueva línea al final del resultado.

Sintaxis

formatRowNoNewline(format, x, y, ...)

Argumentos

  • format — Formato de texto. Por ejemplo, CSV, TSV. String
  • x, y, ... — Expresiones. Any

Valor devuelto

Devuelve una cadena formateada sin saltos de línea. String

Ejemplos

Uso básico

SELECT formatRowNoNewline('CSV', number, 'good')
FROM numbers(3)
┌─formatRowNoNewline('CSV', number, 'good')─┐
│ 0,"good"                                  │
│ 1,"good"                                  │
│ 2,"good"                                  │
└───────────────────────────────────────────┘

fromUnixTimestamp64Micro

Introducido en: v20.5.0

Convierte una marca de tiempo Unix en microsegundos en un valor DateTime64 con precisión de microsegundos.

El valor de entrada se interpreta como una marca de tiempo Unix con precisión de microsegundos (número de microsegundos desde 1970-01-01 00:00:00 UTC).

Sintaxis

fromUnixTimestamp64Micro(value[, timezone])

Argumentos

  • value — Marca de tiempo Unix en microsegundos. Int64
  • timezone — Opcional. Zona horaria del valor devuelto. String

Valor devuelto

Devuelve un valor DateTime64 con precisión de microsegundos. DateTime64(6)

Ejemplos

Ejemplo de uso

SELECT fromUnixTimestamp64Micro(1640995200123456)
┌─fromUnixTimestamp64Micro(1640995200123456)─┐
│                 2022-01-01 00:00:00.123456 │
└────────────────────────────────────────────┘

fromUnixTimestamp64Milli

Introducido en: v20.5.0

Convierte una marca de tiempo Unix en milisegundos en un valor DateTime64 con precisión de milisegundos.

El valor de entrada se trata como una marca de tiempo Unix con precisión de milisegundos (número de milisegundos transcurridos desde 1970-01-01 00:00:00 UTC).

Sintaxis

fromUnixTimestamp64Milli(value[, timezone])

Argumentos

  • value — Marca de tiempo Unix en milisegundos. Int64
  • timezone — Opcional. Zona horaria del valor devuelto. String

Valor devuelto

Un valor DateTime64 con precisión de milisegundos. DateTime64(3)

Ejemplos

Ejemplo de uso

SELECT fromUnixTimestamp64Milli(1640995200123)
┌─fromUnixTimestamp64Milli(1640995200123)─┐
│                 2022-01-01 00:00:00.123 │
└─────────────────────────────────────────┘

fromUnixTimestamp64Nano

Introducido en: v20.5.0

Convierte una marca de tiempo Unix en nanosegundos en un valor DateTime64 con precisión de nanosegundos.

El valor de entrada se interpreta como una marca de tiempo Unix con precisión de nanosegundos (número de nanosegundos transcurridos desde 1970-01-01 00:00:00 UTC).

Sintaxis

fromUnixTimestamp64Nano(value[, timezone])

Argumentos

  • value — marca de tiempo Unix en nanosegundos. Int64
  • timezone — Opcional. Zona horaria del valor devuelto. String

Valor devuelto

Devuelve un valor DateTime64 con precisión de nanosegundos. DateTime64(9)

Ejemplos

Ejemplo de uso

SELECT fromUnixTimestamp64Nano(1640995200123456789)
┌─fromUnixTimestamp64Nano(1640995200123456789)─┐
│                2022-01-01 00:00:00.123456789 │
└──────────────────────────────────────────────┘

fromUnixTimestamp64Second

Introducido en: v24.12.0

Convierte una marca de tiempo Unix en segundos en un valor DateTime64 con precisión de segundos.

El valor de entrada se trata como una marca de tiempo Unix con precisión de segundos (número de segundos desde 1970-01-01 00:00:00 UTC).

Sintaxis

fromUnixTimestamp64Second(value[, timezone])

Argumentos

  • value — marca de tiempo Unix en segundos. Int64
  • timezone — Opcional. Zona horaria del valor devuelto. String

Valor devuelto

Devuelve un valor DateTime64 con precisión de segundos. DateTime64(0)

Ejemplos

Ejemplo de uso

SELECT fromUnixTimestamp64Second(1640995200)
┌─fromUnixTimestamp64Second(1640995200)─┐
│                   2022-01-01 00:00:00 │
└───────────────────────────────────────┘

parseDateTime

Introducido en: v23.3.0

Convierte una cadena de fecha y hora según una cadena de formato de fecha de MySQL.

Esta función es la inversa de formatDateTime. Convierte un argumento String usando una String de formato. Devuelve un valor de tipo DateTime.

Sintaxis

parseDateTime(time_string, format[, timezone])

Aliases: TO_UNIXTIME

Argumentos

  • time_string — Cadena que se analizará para convertirla en DateTime. String
  • format — Cadena de formato que especifica cómo analizar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve un DateTime obtenido al analizar la cadena de entrada según la cadena de formato de estilo MySQL. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTime('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTime('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                       2025-01-04 23:00:00 │
└───────────────────────────────────────────────────────────┘

parseDateTime32BestEffort

Introducido en: v20.9.0

Convierte una representación textual de una fecha y hora al tipo de dato DateTime.

La función interpreta ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, los formatos de fecha y hora de ClickHouse y algunos otros.

Sintaxis

parseDateTime32BestEffort(time_string[, time_zone])

Argumentos

  • time_stringString que contiene una fecha y hora para convertir. String
  • time_zone — Opcional. Zona horaria usada para analizar time_string String

Valor devuelto

Devuelve time_string como un DateTime. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTime32BestEffort('23/10/2025 12:12:57')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2025-10-23 12:12:57 │
└───────────────────────────┘

Con zona horaria

SELECT parseDateTime32BestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2025-08-18 10:22:16 │
└───────────────────────────┘

marca de tiempo Unix

SELECT parseDateTime32BestEffort('1284101485')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2010-09-10 06:51:25 │
└───────────────────────────┘

parseDateTime32BestEffortOrNull

Introducido en: v20.9.0

Igual que parseDateTime32BestEffort, salvo que devuelve NULL cuando encuentra un formato de fecha que no se puede procesar.

Sintaxis

parseDateTime32BestEffortOrNull(time_string[, time_zone])

Argumentos

  • time_string — String que contiene una fecha y hora que se va a convertir. String
  • time_zone — Opcional. Zona horaria según la cual se analiza time_string. String

Valor devuelto

Devuelve un objeto DateTime obtenido al analizar la cadena, o NULL si el análisis falla. DateTime

Ejemplos

Ejemplo de uso

SELECT
    parseDateTime32BestEffortOrNull('23/10/2025 12:12:57') AS valid,
    parseDateTime32BestEffortOrNull('invalid date') AS invalid
┌───────────────valid─┬─invalid─┐
│ 2025-10-23 12:12:57 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTime32BestEffortOrZero

Introducido en: v20.9.0

Igual que parseDateTime32BestEffort, salvo que devuelve una fecha cero o una fecha y hora cero cuando encuentra un formato de fecha que no se puede procesar.

Sintaxis

parseDateTime32BestEffortOrZero(time_string[, time_zone])

Argumentos

  • time_stringString que contiene una fecha y hora para convertir. String
  • time_zone — Opcional. Zona horaria según la cual se analiza time_string. String

Valor devuelto

Devuelve un objeto DateTime obtenido a partir de la cadena o la fecha cero (1970-01-01 00:00:00) si el análisis falla. DateTime

Ejemplos

Ejemplo de uso

SELECT
    parseDateTime32BestEffortOrZero('23/10/2025 12:12:57') AS valid,
    parseDateTime32BestEffortOrZero('invalid date') AS invalid
┌───────────────valid─┬─────────────invalid─┐
│ 2025-10-23 12:12:57 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTime64

Introducido en: v24.11.0

Analiza una cadena de fecha y hora con precisión de subsegundos según una cadena de formato de fecha de MySQL.

Esta función es la inversa de formatDateTime para DateTime64. Analiza un argumento de tipo String usando un formato String. Devuelve un valor de tipo DateTime64 que puede representar fechas de 0000 a 9999 con precisión de subsegundos (las precisiones altas cubren un rango más estrecho porque el valor se almacena en un número Int64 de ticks: la precisión 8 llega aproximadamente hasta 4892 y la precisión 9 abarca de 1677 a 2262).

Sintaxis

parseDateTime64(time_string, format[, timezone])

Argumentos

  • time_string — Cadena que se interpretará como DateTime64. String
  • format — Cadena de formato que especifica cómo interpretar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve un DateTime64 obtenido al interpretar la cadena de entrada según la cadena de formato de estilo MySQL. DateTime64

Ejemplos

Ejemplo de uso

SELECT parseDateTime64('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                         2025-01-04 23:00:00.123000 │
└────────────────────────────────────────────────────────────────────┘

parseDateTime64BestEffort

Introducido en: v20.1.0

Igual que la función parseDateTimeBestEffort, pero también analiza milisegundos y microsegundos, y devuelve el tipo de dato DateTime64.

Sintaxis

parseDateTime64BestEffort(time_string[, precision[, time_zone]])

Argumentos

  • time_string — Cadena que contiene una fecha o una fecha con hora para convertir. String
  • precision — Opcional. Precisión requerida. 3 para milisegundos, 6 para microsegundos. Valor predeterminado: 3. UInt8
  • time_zone — Opcional. Zona horaria. La función interpreta time_string según la zona horaria. String

Valor devuelto

Devuelve time_string convertido al tipo de dato DateTime64. DateTime64

Ejemplos

Ejemplo de uso

SELECT parseDateTime64BestEffort('2025-01-01') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346',6) AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346',3,'Asia/Istanbul') AS a, toTypeName(a) AS t
FORMAT PrettyCompactMonoBlock
┌──────────────────────────a─┬─t──────────────────────────────┐
│ 2025-01-01 01:01:00.123000 │ DateTime64(3)                  │
│ 2025-01-01 00:00:00.000000 │ DateTime64(3)                  │
│ 2025-01-01 01:01:00.123460 │ DateTime64(6)                  │
│ 2025-12-31 22:01:00.123000 │ DateTime64(3, 'Asia/Istanbul') │
└────────────────────────────┴────────────────────────────────┘

parseDateTime64BestEffortOrNull

Introducido en: v20.1.0

Igual que parseDateTime64BestEffort, excepto que devuelve NULL cuando encuentra un formato de fecha que no puede procesarse.

Sintaxis

parseDateTime64BestEffortOrNull(time_string[, precision[, time_zone]])

Argumentos

  • time_string — Cadena que contiene una fecha o una fecha con hora para convertir. String
  • precision — Opcional. Precisión requerida. 3 para milisegundos, 6 para microsegundos. Valor predeterminado: 3. UInt8
  • time_zone — Opcional. Zona horaria. La función interpreta time_string según la zona horaria. String

Valor devuelto

Devuelve time_string convertido a DateTime64, o NULL si no se puede analizar la entrada. DateTime64 o NULL

Ejemplos

Ejemplo de uso

SELECT parseDateTime64BestEffortOrNull('2025-01-01 01:01:00.123') AS valid,
       parseDateTime64BestEffortOrNull('invalid') AS invalid
┌───────────────────valid─┬─invalid─┐
│ 2025-01-01 01:01:00.123 │    ᴺᵁᴸᴸ │
└─────────────────────────┴─────────┘

parseDateTime64BestEffortOrZero

Introducido en: v20.1.0

Igual que parseDateTime64BestEffort, excepto que devuelve una fecha cero o una fecha y hora cero cuando encuentra un formato de fecha que no puede procesarse.

Sintaxis

parseDateTime64BestEffortOrZero(time_string[, precision[, time_zone]])

Argumentos

  • time_stringString que contiene una fecha o una fecha con hora para convertir. String
  • precision — Opcional. Precisión requerida. 3 para milisegundos, 6 para microsegundos. Valor predeterminado: 3. UInt8
  • time_zone — Opcional. Zona horaria. La función interpreta time_string según la zona horaria. String

Valor devuelto

Devuelve time_string convertido a DateTime64, o una fecha cero/datetime (1970-01-01 00:00:00.000) si no se puede analizar la entrada. DateTime64

Ejemplos

Ejemplo de uso

SELECT parseDateTime64BestEffortOrZero('2025-01-01 01:01:00.123') AS valid,
       parseDateTime64BestEffortOrZero('invalid') AS invalid
┌───────────────────valid─┬─────────────────invalid─┐
│ 2025-01-01 01:01:00.123 │ 1970-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64BestEffortUS

Introducido en: v22.8.0

Igual que parseDateTime64BestEffort, salvo que esta función prioriza el formato de fecha de EE. UU. (MM/DD/YYYY, etc.) en caso de ambigüedad.

Sintaxis

parseDateTime64BestEffortUS(time_string [, precision [, time_zone]])

Argumentos

  • time_string — Cadena que contiene una fecha o una fecha con hora para convertir. String
  • precision — Opcional. Precisión requerida. 3 para milisegundos, 6 para microsegundos. Valor predeterminado: 3. UInt8
  • time_zone — Opcional. Zona horaria. La función analiza time_string según la zona horaria. String

Valor devuelto

Devuelve time_string convertido a DateTime64, con preferencia por el formato de fecha de EE. UU. en casos ambiguos. DateTime64

Ejemplos

Ejemplo de uso

SELECT parseDateTime64BestEffortUS('02/10/2025 12:30:45.123') AS us_format,
       parseDateTime64BestEffortUS('15/08/2025 10:15:30.456') AS fallback_to_standard
┌───────────────us_format─┬────fallback_to_standard─┐
│ 2025-02-10 12:30:45.123 │ 2025-08-15 10:15:30.456 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64BestEffortUSOrNull

Introducido en: v22.8.0

Igual que parseDateTime64BestEffort, salvo que esta función prioriza el formato de fecha de EE. UU. (MM/DD/YYYY, etc.) en caso de ambigüedad y devuelve NULL cuando encuentra un formato de fecha que no puede procesarse.

Sintaxis

parseDateTime64BestEffortUSOrNull(time_string[, precision[, time_zone]])

Argumentos

  • time_string — Cadena que contiene una fecha o una fecha con hora para convertir. String
  • precision — Opcional. Precisión requerida. 3 para milisegundos, 6 para microsegundos. Valor predeterminado: 3. UInt8
  • time_zone — Opcional. Zona horaria. La función analiza time_string según la zona horaria. String

Valor devuelto

Devuelve time_string convertido a DateTime64 con preferencia por el formato de EE. UU., o NULL si la entrada no se puede interpretar. DateTime64 o NULL

Ejemplos

Ejemplo de uso

SELECT parseDateTime64BestEffortUSOrNull('02/10/2025 12:30:45.123') AS valid_us,
       parseDateTime64BestEffortUSOrNull('invalid') AS invalid
┌────────────────valid_us─┬─invalid─┐
│ 2025-02-10 12:30:45.123 │    ᴺᵁᴸᴸ │
└─────────────────────────┴─────────┘

parseDateTime64BestEffortUSOrZero

Introducido en: v22.8.0

Igual que parseDateTime64BestEffort, salvo que esta función da preferencia al formato de fecha de EE. UU. (MM/DD/YYYY, etc.) en caso de ambigüedad y devuelve una fecha cero o una fecha y hora cero cuando encuentra un formato de fecha que no puede procesarse.

Sintaxis

parseDateTime64BestEffortUSOrZero(time_string [, precision [, time_zone]])

Argumentos

  • time_stringString que contiene una fecha o una fecha con hora para convertir. String
  • precision — Opcional. Precisión requerida. 3 para milisegundos, 6 para microsegundos. Valor predeterminado: 3. UInt8
  • time_zone — Opcional. Zona horaria. La función analiza time_string según la zona horaria. String

Valor devuelto

Devuelve time_string convertido a DateTime64 con preferencia por el formato de EE. UU., o una fecha/fecha y hora cero (1970-01-01 00:00:00.000) si no se puede analizar la entrada. DateTime64

Ejemplos

Ejemplo de uso

SELECT parseDateTime64BestEffortUSOrZero('02/10/2025 12:30:45.123') AS valid_us,
       parseDateTime64BestEffortUSOrZero('invalid') AS invalid
┌────────────────valid_us─┬─────────────────invalid─┐
│ 2025-02-10 12:30:45.123 │ 1970-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64InJodaSyntax

Introducido en: v24.10.0

Analiza una cadena de fecha y hora con precisión inferior al segundo según una cadena de formato de fecha de Joda.

Esta función es la inversa de formatDateTimeInJodaSyntax para DateTime64. Analiza un argumento String con una cadena de formato String de estilo Joda. Devuelve un tipo DateTime64 que puede representar fechas de 0000 a 9999 con precisión inferior al segundo (las precisiones altas cubren un intervalo más estrecho porque el valor se almacena en un número Int64 de ticks: la precisión 8 alcanza aproximadamente 4892 y la precisión 9 abarca de 1677 a 2262).

Consulta la documentación de Joda Time para conocer los patrones de formato.

Sintaxis

parseDateTime64InJodaSyntax(time_string, format[, timezone])

Argumentos

  • time_string — Cadena que se analizará como DateTime64. String
  • format — Cadena de formato en sintaxis Joda que especifica cómo analizar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve un DateTime64 obtenido a partir de la cadena de entrada según la cadena de formato de estilo Joda. DateTime64

Ejemplos

Ejemplo de uso

SELECT parseDateTime64InJodaSyntax('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntax('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                           2025-01-04 23:00:00.123 │
└───────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64InJodaSyntaxOrNull

Introducido en: v24.10.0

Igual que parseDateTime64InJodaSyntax, pero devuelve NULL cuando encuentra un formato de fecha que no se puede analizar.

Sintaxis

parseDateTime64InJodaSyntaxOrNull(time_string, format[, timezone])

Argumentos

  • time_string — Cadena que se analizará como DateTime64. String
  • format — Cadena de formato en sintaxis Joda que especifica cómo analizar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el valor DateTime64 analizado a partir de la cadena de entrada, o NULL si el análisis falla. Nullable(DateTime64)

Ejemplos

Ejemplo de uso

SELECT parseDateTime64InJodaSyntaxOrNull('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntaxOrNull('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                                 2025-01-04 23:00:00.123 │
└─────────────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64InJodaSyntaxOrZero

Introducido en: v24.10.0

Igual que parseDateTime64InJodaSyntax, pero devuelve una fecha cero cuando encuentra un formato de fecha que no se puede analizar.

Sintaxis

parseDateTime64InJodaSyntaxOrZero(time_string, format[, timezone])

Argumentos

  • time_string — String que se analizará como DateTime64. String
  • format — Cadena de formato en sintaxis Joda que especifica cómo analizar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el DateTime64 interpretado a partir de la cadena de entrada, o el valor cero de DateTime64 si el análisis falla. DateTime64

Ejemplos

Ejemplo de uso

SELECT parseDateTime64InJodaSyntaxOrZero('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntaxOrZero('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                                 2025-01-04 23:00:00.123 │
└─────────────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64OrNull

Introducido en: v24.11.0

Igual que parseDateTime64, pero devuelve NULL cuando encuentra un formato de fecha que no se puede analizar.

Sintaxis

parseDateTime64OrNull(time_string, format[, timezone])

Argumentos

  • time_string — Cadena que se analizará como DateTime64. String
  • format — Cadena de formato que especifica cómo analizar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el valor DateTime64 analizado a partir de la cadena de entrada, o NULL si el análisis falla. Nullable(DateTime64)

Ejemplos

Ejemplo de uso

SELECT parseDateTime64OrNull('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64OrNull('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                               2025-01-04 23:00:00.123000 │
└──────────────────────────────────────────────────────────────────────────┘

parseDateTime64OrZero

Introducido en: v24.11.0

Igual que parseDateTime64, pero devuelve una fecha cero cuando encuentra un formato de fecha que no se puede analizar.

Sintaxis

parseDateTime64OrZero(time_string, format[, timezone])

Argumentos

  • time_string — Cadena que se analizará como DateTime64. String
  • format — Cadena de formato que especifica cómo analizar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve un DateTime64 interpretado a partir de la cadena de entrada, o el valor cero de DateTime64 si el análisis falla. DateTime64

Ejemplos

Ejemplo de uso

SELECT parseDateTime64OrZero('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64OrZero('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                               2025-01-04 23:00:00.123000 │
└──────────────────────────────────────────────────────────────────────────┘

parseDateTimeBestEffort

Introducido en: v1.1.0

Convierte una fecha y hora en representación String al tipo de dato DateTime. La función analiza ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, los formatos de fecha y hora de ClickHouse y algunos otros.

Formatos no estándar compatibles:

  • Una cadena que contiene un Unix timestamp de 9..10 dígitos.
  • Una cadena con una fecha y un componente de hora: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss, etc.
  • Una cadena con una fecha, pero sin componente de hora: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY etc.
  • Una cadena con un día y una hora: DD, DD hh, DD hh:mm. En este caso, MM se sustituye por 01.
  • Una cadena que incluye la fecha y hora junto con información del desfase de zona horaria: YYYY-MM-DD hh:mm:ss ±h:mm, etc.
  • Una marca de tiempo de syslog: Mmm dd hh:mm:ss. Por ejemplo, Jun 9 14:20:32.

En todos los formatos con separador, la función analiza nombres de meses expresados con el nombre completo o con las tres primeras letras del nombre del mes. Si no se especifica el año, se considera que es el año actual.

Sintaxis

parseDateTimeBestEffort(time_string[, time_zone])

Argumentos

  • time_string — Cadena que contiene una fecha y una hora para convertir. String
  • time_zone — Opcional. Zona horaria según la cual se analiza time_string. String

Valor devuelto

Devuelve time_string como DateTime. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTimeBestEffort('23/10/2025 12:12:57') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-10-23 12:12:57 │
└─────────────────────────┘

Con zona horaria

SELECT parseDateTimeBestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-08-18 10:22:16 │
└─────────────────────────┘

Marca temporal Unix

SELECT parseDateTimeBestEffort('1735689600') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-01-01 00:00:00 │
└─────────────────────────┘

parseDateTimeBestEffortOrNull

Introducido en: v1.1.0

Igual que parseDateTimeBestEffort, excepto que devuelve NULL cuando encuentra un formato de fecha que no se puede procesar. La función analiza ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, los formatos de fecha y hora de ClickHouse y algunos otros.

Formatos no estándar admitidos:

  • Una cadena que contiene un Unix timestamp de 9..10 dígitos.
  • Una cadena con una fecha y un componente de hora: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss, etc.
  • Una cadena con una fecha, pero sin componente de hora: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY, etc.
  • Una cadena con un día y una hora: DD, DD hh, DD hh:mm. En este caso, MM se sustituye por 01.
  • Una cadena que incluye la fecha y la hora junto con información de desplazamiento de zona horaria: YYYY-MM-DD hh:mm:ss ±h:mm, etc.
  • Un timestamp de syslog: Mmm dd hh:mm:ss. Por ejemplo, Jun 9 14:20:32.

En todos los formatos con separador, la función analiza nombres de meses expresados con su nombre completo o con las tres primeras letras del nombre del mes. Si no se especifica el año, se considera que es el año actual.

Sintaxis

parseDateTimeBestEffortOrNull(time_string[, time_zone])

Argumentos

  • time_stringString que contiene una fecha y hora para convertir. String
  • time_zone — Opcional. Zona horaria según la que se interpreta time_string. String

Valor devuelto

Devuelve time_string como DateTime, o NULL si la entrada no se puede interpretar. DateTime o NULL

Ejemplos

Ejemplo de uso

SELECT parseDateTimeBestEffortOrNull('23/10/2025 12:12:57') AS valid,
       parseDateTimeBestEffortOrNull('invalid') AS invalid
┌───────────────valid─┬─invalid─┐
│ 2025-10-23 12:12:57 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTimeBestEffortOrZero

Introducido en: v1.1.0

Igual que parseDateTimeBestEffort, excepto que devuelve una fecha cero o una fecha y hora cero cuando encuentra un formato de fecha que no puede procesar. La función analiza ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, los formatos de fecha y hora de ClickHouse y algunos otros.

Formatos no estándar compatibles:

  • Una cadena que contiene una Unix timestamp de 9..10 dígitos.
  • Una cadena con una fecha y un componente de hora: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss, etc.
  • Una cadena con una fecha, pero sin componente de hora: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY etc.
  • Una cadena con un día y una hora: DD, DD hh, DD hh:mm. En este caso, MM se sustituye por 01.
  • Una cadena que incluye la fecha y la hora junto con información del desfase de zona horaria: YYYY-MM-DD hh:mm:ss ±h:mm, etc.
  • Una marca de tiempo de syslog: Mmm dd hh:mm:ss. Por ejemplo, Jun 9 14:20:32.

Para todos los formatos con separador, la función analiza nombres de meses expresados con su nombre completo o con las tres primeras letras del nombre del mes. Si no se especifica el año, se considera igual al año actual.

Sintaxis

parseDateTimeBestEffortOrZero(time_string[, time_zone])

Argumentos

  • time_stringString que contiene una fecha y hora para convertir. String
  • time_zone — Opcional. Zona horaria según la cual se interpreta time_string. String

Valor devuelto

Devuelve time_string como un DateTime, o una fecha cero/fecha y hora cero (1970-01-01 o 1970-01-01 00:00:00) si no se puede interpretar la entrada. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTimeBestEffortOrZero('23/10/2025 12:12:57') AS valid,
       parseDateTimeBestEffortOrZero('invalid') AS invalid
┌───────────────valid─┬─────────────invalid─┐
│ 2025-10-23 12:12:57 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTimeBestEffortUS

Introducido en: v1.1.0

Esta función se comporta como parseDateTimeBestEffort para formatos de fecha ISO, p. ej., YYYY-MM-DD hh:mm:ss, y otros formatos de fecha en los que los componentes de mes y día pueden extraerse de forma inequívoca, p. ej., YYYYMMDDhhmmss, YYYY-MM, DD hh o YYYY-MM-DD hh:mm:ss ±h:mm. Si los componentes de mes y día no pueden extraerse de forma inequívoca, p. ej., MM/DD/YYYY, MM-DD-YYYY o MM-DD-YY, da preferencia al formato de fecha de EE. UU. en lugar de DD/MM/YYYY, DD-MM-YYYY o DD-MM-YY. Como excepción a lo anterior, si el mes es mayor que 12 y menor o igual que 31, esta función vuelve al comportamiento de parseDateTimeBestEffort; p. ej., 15/08/2020 se interpreta como 2020-08-15.

Sintaxis

parseDateTimeBestEffortUS(time_string[, time_zone])

Argumentos

  • time_stringString que contiene una fecha y hora que se convertirán. String
  • time_zone — Opcional. Zona horaria según la cual se interpreta time_string. String

Valor devuelto

Devuelve time_string como DateTime y, en casos ambiguos, prioriza el formato de fecha de EE. UU. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTimeBestEffortUS('02/10/2025') AS us_format,
       parseDateTimeBestEffortUS('15/08/2025') AS fallback_to_standard
┌───────────us_format─┬─fallback_to_standard─┐
│ 2025-02-10 00:00:00 │  2025-08-15 00:00:00 │
└─────────────────────┴──────────────────────┘

parseDateTimeBestEffortUSOrNull

Introducido en: v1.1.0

Igual que la función parseDateTimeBestEffortUS, salvo que devuelve NULL cuando encuentra un formato de fecha que no se puede procesar.

Esta función se comporta como parseDateTimeBestEffort con los formatos de fecha ISO, pero en los casos ambiguos da prioridad al formato de fecha de EE. UU. y devuelve NULL si se producen errores de análisis.

Sintaxis

parseDateTimeBestEffortUSOrNull(time_string[, time_zone])

Argumentos

  • time_stringString que contiene una fecha y hora para convertir. String
  • time_zone — Opcional. Zona horaria según la cual se interpreta time_string. String

Valor devuelto

Devuelve time_string como un DateTime con preferencia por el formato de EE. UU., o NULL si la entrada no se puede interpretar. DateTime o NULL

Ejemplos

Ejemplo de uso

SELECT parseDateTimeBestEffortUSOrNull('02/10/2025') AS valid_us,
       parseDateTimeBestEffortUSOrNull('invalid') AS invalid
┌────────────valid_us─┬─invalid─┐
│ 2025-02-10 00:00:00 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTimeBestEffortUSOrZero

Introducido en: v1.1.0

Igual que la función parseDateTimeBestEffortUS, salvo que devuelve una fecha cero (1970-01-01) o una fecha cero con hora (1970-01-01 00:00:00) cuando encuentra un formato de fecha que no puede procesarse.

Esta función se comporta como parseDateTimeBestEffort para los formatos de fecha ISO, pero en los casos ambiguos da prioridad al formato de fecha de EE. UU. y devuelve un valor cero si se producen errores de análisis.

Sintaxis

parseDateTimeBestEffortUSOrZero(time_string[, time_zone])

Argumentos

  • time_stringString que contiene una fecha y hora que se va a convertir. String
  • time_zone — Opcional. Zona horaria según la cual se interpreta time_string. String

Valor devuelto

Devuelve time_string como un DateTime usando la preferencia de formato de EE. UU., o una fecha/fecha y hora cero (1970-01-01 o 1970-01-01 00:00:00) si no se puede interpretar la entrada. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTimeBestEffortUSOrZero('02/10/2025') AS valid_us,
       parseDateTimeBestEffortUSOrZero('invalid') AS invalid
┌────────────valid_us─┬─────────────invalid─┐
│ 2025-02-10 00:00:00 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTimeInJodaSyntax

Introducido en: v23.3.0

Interpreta una cadena de fecha y hora según una cadena de formato de fecha de Joda.

Esta función es la inversa de formatDateTimeInJodaSyntax. Interpreta un argumento de tipo String usando una cadena de formato de estilo Joda. Devuelve un valor de tipo DateTime.

Consulta la documentación de Joda Time para conocer los patrones de formato.

Sintaxis

parseDateTimeInJodaSyntax(time_string, format[, timezone])

Argumentos

  • time_string — Cadena para analizar como DateTime. String
  • format — Cadena de formato en sintaxis Joda que especifica cómo interpretar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve un DateTime interpretado a partir de la cadena de entrada según la cadena de formato de estilo Joda. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTimeInJodaSyntax('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntax('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                     2025-01-04 23:00:00 │
└─────────────────────────────────────────────────────────────────────────┘

parseDateTimeInJodaSyntaxOrNull

Introducido en: v23.3.0

Igual que parseDateTimeInJodaSyntax, pero devuelve NULL cuando encuentra un formato de fecha que no se puede analizar.

Sintaxis

parseDateTimeInJodaSyntaxOrNull(time_string, format[, timezone])

Argumentos

  • time_string — Cadena para analizar como DateTime. String
  • format — Cadena de formato en sintaxis Joda que especifica cómo interpretar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el valor DateTime obtenido al interpretar la cadena de entrada, o NULL si el análisis falla. Nullable(DateTime)

Ejemplos

Ejemplo de uso

SELECT parseDateTimeInJodaSyntaxOrNull('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntaxOrNull('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                           2025-01-04 23:00:00 │
└───────────────────────────────────────────────────────────────────────────────┘

parseDateTimeInJodaSyntaxOrZero

Introducido en: v23.3.0

Igual que parseDateTimeInJodaSyntax, pero devuelve la fecha cero cuando encuentra un formato de fecha que no se puede analizar.

Sintaxis

parseDateTimeInJodaSyntaxOrZero(time_string, format[, timezone])

Argumentos

  • time_string — Cadena que se analizará para convertirla en DateTime. String
  • format — Cadena de formato en sintaxis Joda que especifica cómo analizar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el DateTime obtenido al analizar la cadena de entrada, o el DateTime cero si el análisis falla. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTimeInJodaSyntaxOrZero('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntaxOrZero('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                           2025-01-04 23:00:00 │
└───────────────────────────────────────────────────────────────────────────────┘

parseDateTimeOrNull

Introducido en: v23.3.0

Igual que parseDateTime, pero devuelve NULL cuando encuentra un formato de fecha que no se puede analizar.

Sintaxis

parseDateTimeOrNull(time_string, format[, timezone])

Alias: str_to_date

Argumentos

  • time_string — Cadena para analizar como DateTime. String
  • format — Cadena de formato que especifica cómo analizar time&#95;string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el DateTime obtenido a partir de la cadena de entrada, o NULL si el análisis falla. Nullable(DateTime)

Ejemplos

Ejemplo de uso

SELECT parseDateTimeOrNull('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTimeOrNull('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                             2025-01-04 23:00:00 │
└─────────────────────────────────────────────────────────────────┘

parseDateTimeOrZero

Introducido en: v23.3.0

Igual que parseDateTime, pero devuelve una fecha cero cuando encuentra un formato de fecha que no se puede analizar.

Sintaxis

parseDateTimeOrZero(time_string, format[, timezone])

Argumentos

  • time_string — Cadena que se debe analizar como DateTime. String
  • format — Cadena de formato que especifica cómo analizar time_string. String
  • timezone — Opcional. Zona horaria. String

Valor devuelto

Devuelve el DateTime analizado a partir de la cadena de entrada, o un DateTime con valor cero si el análisis falla. DateTime

Ejemplos

Ejemplo de uso

SELECT parseDateTimeOrZero('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTimeOrZero('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                             2025-01-04 23:00:00 │
└─────────────────────────────────────────────────────────────────┘

reinterpret

Introducido en: v1.1.0

Usa la misma secuencia de bytes en memoria de origen para el valor proporcionado x y la reinterpreta como el tipo de destino. Cuando el tipo de destino es String, un Array de origen solo es compatible si su tipo de elemento es de tamaño fijo y contiguo en memoria (por ejemplo, Array(UInt8) o Array(FixedString(2))); los bytes de sus elementos se copian literalmente en su orden nativo en memoria, por lo que el resultado puede volver a reinterpretarse como el tipo Array original en cualquier arquitectura. Los arrays cuyos elementos son de longitud variable (por ejemplo, Array(String)) o Nullable (por ejemplo, Array(Nullable(Int32))) no son compatibles.

Sintaxis

reinterpret(x, type)

Argumentos

  • x — Valor que se va a reinterpretar. Al reinterpretarlo como String, un Array de origen debe tener elementos contiguos de tamaño fijo. Any
  • type — Tipo de destino. Si es un array, el tipo de elemento del array debe ser de longitud fija. String

Valor devuelto

Valor del tipo de destino. Any

Ejemplos

Ejemplo de uso

SELECT reinterpret(toInt8(-1), 'UInt8') AS int_to_uint,
    reinterpret(toInt8(1), 'Float32') AS int_to_float,
    reinterpret('1', 'UInt32') AS string_to_int
┌─int_to_uint─┬─int_to_float─┬─string_to_int─┐
│         255 │        1e-45 │            49 │
└─────────────┴──────────────┴───────────────┘

Ejemplo de Array

SELECT reinterpret(x'3108b4403108d4403108b4403108d440', 'Array(Float32)') AS string_to_array_of_Float32
┌─string_to_array_of_Float32─┐
│ [5.626,6.626,5.626,6.626]  │
└────────────────────────────┘

Ejemplo de Array a String

SELECT hex(reinterpret([toUInt8(1), toUInt8(2), toUInt8(255)]::Array(UInt8), 'String')) AS array_of_UInt8_to_string
┌─array_of_UInt8_to_string─┐
│ 0102FF                   │
└──────────────────────────┘

reinterpretAsDate

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor Date (suponiendo un orden little endian), que representa el número de días desde el inicio de la época Unix 1970-01-01

Sintaxis

reinterpretAsDate(x)

Argumentos

Valor devuelto

Date. Date

Ejemplos

Ejemplo de uso

SELECT reinterpretAsDate(65), reinterpretAsDate('A')
┌─reinterpretAsDate(65)─┬─reinterpretAsDate('A')─┐
│            1970-03-07 │             1970-03-07 │
└───────────────────────┴────────────────────────┘

reinterpretAsDateTime

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor DateTime (suponiendo el orden little endian), que es el número de días transcurridos desde el inicio de la época Unix, 1970-01-01

Sintaxis

reinterpretAsDateTime(x)

Argumentos

Valor devuelto

Fecha y hora. DateTime

Ejemplos

Ejemplo de uso

SELECT reinterpretAsDateTime(65), reinterpretAsDateTime('A')
┌─reinterpretAsDateTime(65)─┬─reinterpretAsDateTime('A')─┐
│       1970-01-01 00:01:05 │        1970-01-01 00:01:05 │
└───────────────────────────┴────────────────────────────┘

reinterpretAsFixedString

Introducido en: v1.1.0

Reinterpreta el valor de entrada como una cadena de longitud fija (asumiendo el orden little endian). Los bytes nulos del final se ignoran; por ejemplo, para el valor UInt32 255, la función devuelve una cadena con un solo carácter.

Sintaxis

reinterpretAsFixedString(x)

Argumentos

Valor devuelto

Cadena fija que contiene los bytes que representan x. FixedString

Ejemplos

Ejemplo de uso

-- The result is a sequence of bytes, so it is shown with `hex`.
SELECT
    hex(reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05'))),
    hex(reinterpretAsFixedString(toDate('1970-03-07')))
┌─hex(reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05')))─┬─hex(reinterpretAsFixedString(toDate('1970-03-07')))─┐
│ 510E0000                                                         │ 4100                                                │
└──────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘

reinterpretAsFloat32

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo Float32. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsFloat32(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. Float32

Ejemplos

Ejemplo de uso

SELECT reinterpretAsUInt32(toFloat32(0.2)) AS x, reinterpretAsFloat32(x)
┌──────────x─┬─reinterpretAsFloat32(x)─┐
│ 1045220557 │                     0.2 │
└────────────┴─────────────────────────┘

reinterpretAsFloat64

Introducida en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo Float64. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsFloat64(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. Float64

Ejemplos

Ejemplo de uso

SELECT reinterpretAsUInt64(toFloat64(0.2)) AS x, reinterpretAsFloat64(x)
┌───────────────────x─┬─reinterpretAsFloat64(x)─┐
│ 4596373779694328218 │                     0.2 │
└─────────────────────┴─────────────────────────┘

reinterpretAsInt128

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo Int128. A diferencia de CAST, la función no intenta conservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsInt128(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. Int128

Ejemplos

Ejemplo de uso

SELECT
    toInt64(257) AS x,
    toTypeName(x),
    reinterpretAsInt128(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int64         │ 257 │ Int128          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt16

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo Int16. A diferencia de CAST, la función no intenta conservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsInt16(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. Int16

Ejemplos

Ejemplo de uso

SELECT
    toInt8(257) AS x,
    toTypeName(x),
    reinterpretAsInt16(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ Int8          │   1 │ Int16           │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsInt256

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo Int256. A diferencia de CAST, la función no intenta conservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado es indefinido.

Sintaxis

reinterpretAsInt256(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado de x. Int256

Ejemplos

Ejemplo de uso

SELECT
    toInt128(257) AS x,
    toTypeName(x),
    reinterpretAsInt256(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int128        │ 257 │ Int256          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt32

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo Int32. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsInt32(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. Int32

Ejemplos

Ejemplo de uso

SELECT
    toInt16(257) AS x,
    toTypeName(x),
    reinterpretAsInt32(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int16         │ 257 │ Int32           │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt64

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor del tipo Int64. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsInt64(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. Int64

Ejemplos

Ejemplo de uso

SELECT
    toInt32(257) AS x,
    toTypeName(x),
    reinterpretAsInt64(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int32         │ 257 │ Int64           │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt8

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo Int8. A diferencia de CAST, la función no intenta conservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsInt8(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado de x. Int8

Ejemplos

Ejemplo de uso

SELECT
    toUInt8(257) AS x,
    toTypeName(x),
    reinterpretAsInt8(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8         │   1 │ Int8            │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsString

Introducido en: v1.1.0

Reinterpreta el valor de entrada como una cadena. Para los valores escalares, el orden de bytes se normaliza a little endian y los bytes nulos del final se ignoran; por ejemplo, para el valor UInt32 255, la función devuelve una cadena con un solo carácter. Para un Array de elementos de tamaño fijo, los bytes de los elementos se copian literalmente en su orden nativo en memoria, sin recortar los bytes cero del final y sin normalizar a little endian, por lo que el resultado puede reinterpretarse de nuevo como el tipo Array original en cualquier arquitectura.

Sintaxis

reinterpretAsString(x)

Argumentos

Valor devuelto

String que contiene los bytes que representan x. String

Ejemplos

Ejemplo de uso

-- The result is a sequence of bytes, so it is shown with `hex`.
SELECT
    hex(reinterpretAsString(toDateTime('1970-01-01 01:01:05'))),
    hex(reinterpretAsString(toDate('1970-03-07')))
┌─hex(reinterpretAsString(toDateTime('1970-01-01 01:01:05')))─┬─hex(reinterpretAsString(toDate('1970-03-07')))─┐
│ 510E                                                        │ 41                                             │
└─────────────────────────────────────────────────────────────┴────────────────────────────────────────────────┘

Ejemplo de conversión de Array a String

SELECT hex(reinterpretAsString([toUInt8(1), toUInt8(2), toUInt8(255)]::Array(UInt8))) AS array_of_UInt8_to_string
┌─array_of_UInt8_to_string─┐
│ 0102FF                   │
└──────────────────────────┘

reinterpretAsUInt128

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo UInt128. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado es indefinido.

Sintaxis

reinterpretAsUInt128(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. UInt128

Ejemplos

Ejemplo de uso

SELECT
    toUInt64(257) AS x,
    toTypeName(x),
    reinterpretAsUInt128(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt64        │ 257 │ UInt128         │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt16

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo UInt16. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsUInt16(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. UInt16

Ejemplos

Ejemplo de uso

SELECT
    toUInt8(257) AS x,
    toTypeName(x),
    reinterpretAsUInt16(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8         │   1 │ UInt16          │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt256

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo UInt256. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado es indefinido.

Sintaxis

reinterpretAsUInt256(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. UInt256

Ejemplos

Ejemplo de uso

SELECT
    toUInt128(257) AS x,
    toTypeName(x),
    reinterpretAsUInt256(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt128       │ 257 │ UInt256         │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt32

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo UInt32. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsUInt32(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. UInt32

Ejemplos

Ejemplo de uso

SELECT
    toUInt16(257) AS x,
    toTypeName(x),
    reinterpretAsUInt32(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt16        │ 257 │ UInt32          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt64

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo UInt64. A diferencia de CAST, la función no intenta conservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado es indefinido.

Sintaxis

reinterpretAsUInt64(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado de x. UInt64

Ejemplos

Ejemplo de uso

SELECT
    toUInt32(257) AS x,
    toTypeName(x),
    reinterpretAsUInt64(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt32        │ 257 │ UInt64          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt8

Introducido en: v1.1.0

Reinterpreta el valor de entrada como un valor de tipo UInt8. A diferencia de CAST, la función no intenta preservar el valor original; si el tipo de destino no puede representar el tipo de entrada, el resultado no está definido.

Sintaxis

reinterpretAsUInt8(x)

Argumentos

Valor devuelto

Devuelve el valor reinterpretado x. UInt8

Ejemplos

Ejemplo de uso

SELECT
    toInt8(-1) AS val,
    toTypeName(val),
    reinterpretAsUInt8(val) AS res,
    toTypeName(res);
┌─val─┬─toTypeName(val)─┬─res─┬─toTypeName(res)─┐
│  -1 │ Int8            │ 255 │ UInt8           │
└─────┴─────────────────┴─────┴─────────────────┘

reinterpretAsUUID

Introducido en: v1.1.0

Acepta una cadena de 16 bytes y devuelve un UUID interpretando cada mitad de 8 bytes en orden de bytes little-endian. Si la cadena no tiene la longitud suficiente, la función actúa como si se rellenara al final con la cantidad necesaria de bytes nulos. Si la cadena tiene más de 16 bytes, se ignoran los bytes adicionales del final.

Sintaxis

reinterpretAsUUID(fixed_string)

Argumentos

  • fixed_string — Cadena de bytes en orden big-endian. FixedString

Valor devuelto

Un valor del tipo UUID. UUID

Ejemplos

De cadena a UUID

SELECT reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))
┌─reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))─┐
│ 08090a0b-0c0d-0e0f-0001-020304050607                                  │
└───────────────────────────────────────────────────────────────────────┘

toBFloat16

Introducido en: v1.1.0

Convierte un valor de entrada a un valor de tipo BFloat16. Lanza una excepción en caso de error.

Véase también:

Sintaxis

toBFloat16(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expression

Valor devuelto

Devuelve un valor brain-float de 16 bits. BFloat16

Ejemplos

Ejemplo de uso

SELECT
toBFloat16(toFloat32(42.7)),
toBFloat16(toFloat32('42.7')),
toBFloat16('42.7')
FORMAT Vertical;
Row 1:
──────
toBFloat16(toFloat32(42.7)):   42.5
toBFloat16(toFloat32('42.7')): 42.5
toBFloat16('42.7'):            42.5

toBFloat16OrNull

Introducido en: v1.1.0

Convierte un valor de entrada de tipo String en un valor de tipo BFloat16. Si la cadena no representa un valor de coma flotante, la función devuelve NULL.

Argumentos admitidos:

  • Representaciones en cadena de valores numéricos.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores binarios y hexadecimales.
  • Valores numéricos.

Vea también:

Sintaxis

toBFloat16OrNull(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor brain-float de 16 bits o NULL en caso contrario. BFloat16 o NULL

Ejemplos

Ejemplo de uso

SELECT toBFloat16OrNull('0x5E'), -- unsupported arguments
       toBFloat16OrNull('12.3'), -- typical use
       toBFloat16OrNull('12.3456789') -- silent loss of precision
\N	12.25	12.3125

toBFloat16OrZero

Introducido en: v1.1.0

Convierte un valor de entrada de tipo String en un valor de tipo BFloat16. Si la cadena no representa un valor de coma flotante, la función devuelve cero.

Argumentos admitidos:

  • Representaciones en cadena de valores numéricos.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores binarios y hexadecimales.
  • Valores numéricos.

Véase también:

Sintaxis

toBFloat16OrZero(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor brain-float de 16 bits; de lo contrario, 0. BFloat16

Ejemplos

Ejemplo de uso

SELECT toBFloat16OrZero('0x5E'), -- unsupported arguments
       toBFloat16OrZero('12.3'), -- typical use
       toBFloat16OrZero('12.3456789') -- silent loss of precision
0	12.25	12.3125

toBool

Introducido en: v22.2.0

Convierte un valor de entrada en un valor del tipo Bool.

Sintaxis

toBool(expr)

Argumentos

  • expr — Expresión que devuelve un número o una cadena. Para las cadenas, acepta 'true' o 'false' (sin distinguir entre mayúsculas y minúsculas). (U)Int* o Float* o String o Expression

Valor devuelto

Devuelve true o false según la evaluación del argumento. Bool

Ejemplos

Ejemplo de uso

SELECT
    toBool(toUInt8(1)),
    toBool(toInt8(-1)),
    toBool(toFloat32(1.01)),
    toBool('true'),
    toBool('false'),
    toBool('FALSE')
FORMAT Vertical
Row 1:
──────
toBool(toUInt8(1)):      true
toBool(toInt8(-1)):      true
toBool(toFloat32(1.01)): true
toBool('true'):          true
toBool('false'):         false
toBool('FALSE'):         false

toDate

Introducido en: v1.1.0

Convierte un valor de entrada al tipo Date. Admite la conversión desde tipos String, FixedString, DateTime o numéricos.

Sintaxis

toDate(x)

Argumentos

Valor devuelto

Devuelve el valor de entrada convertido. Date

Ejemplos

Conversión de String a Date

SELECT toDate('2025-04-15')
2025-04-15

Conversión de DateTime a Date

SELECT toDate(toDateTime('2025-04-15 10:30:00'))
2025-04-15

Conversión de entero a fecha

SELECT toDate(20297)
2025-07-28

toDate32

Introducido en: v21.9.0

Convierte el argumento al tipo de dato Date32. Si el valor está fuera del rango [0000-01-01, 9999-12-31], toDate32 devuelve los valores límite admitidos por Date32. Si el argumento es de tipo Date, se tienen en cuenta sus límites.

Sintaxis

toDate32(expr)

Argumentos

Valor devuelto

Devuelve una fecha de calendario. Date32

Ejemplos

Dentro del intervalo

SELECT toDate32('2025-01-01') AS value, toTypeName(value)
FORMAT Vertical
Row 1:
──────
value:             2025-01-01
toTypeName(value): Date32

Antes de 1900

SELECT toDate32('1899-01-01') AS value, toTypeName(value)
FORMAT Vertical
Row 1:
──────
value:             1899-01-01
toTypeName(value): Date32

toDate32OrDefault

Introducido en: v21.11.0

Convierte el argumento al tipo de dato Date32. Si el argumento no se puede convertir, lo que incluye un valor numérico fuera del rango de Date32, la función devuelve un valor predeterminado, que es el segundo argumento (si se especifica) o, de lo contrario, 1900-01-01, el valor predeterminado histórico de Date32 (no su límite inferior, que es 0000-01-01). Si el argumento es de tipo Date, se tienen en cuenta sus límites.

Tenga en cuenta que, a diferencia de toDate32, esta función no satura un argumento numérico fuera de rango a los límites de Date32; dicho argumento se considera no convertible.

Sintaxis

toDate32OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devolverá si el análisis falla. Date32

Valor devuelto

Un valor de tipo Date32 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporciona, o 1900-01-01 en caso contrario. Date32

Ejemplos

Conversión correcta

SELECT toDate32OrDefault('1930-01-01', toDate32('2020-01-01'))
1930-01-01

Error de conversión

SELECT toDate32OrDefault('xx1930-01-01', toDate32('2020-01-01'))
2020-01-01

Número fuera de rango

SELECT toDate32OrDefault(toUInt64(18446744073709551615), toDate32('2020-01-01'))
2020-01-01

toDate32OrNull

Introducido en: v21.9.0

Convierte un valor de entrada a un valor de tipo Date32, pero devuelve NULL si recibe un argumento no válido. Igual que toDate32, pero devuelve NULL si recibe un argumento no válido.

Sintaxis

toDate32OrNull(x)

Argumentos

  • x — La representación en cadena de una fecha. String

Valor devuelto

Devuelve un valor Date32 si la conversión se realiza correctamente; de lo contrario, NULL. Date32 o NULL

Ejemplos

Ejemplo de uso

SELECT toDate32OrNull('2025-01-01'), toDate32OrNull('invalid')
┌─toDate32OrNull('2025-01-01')─┬─toDate32OrNull('invalid')─┐
│                   2025-01-01 │                      ᴺᵁᴸᴸ │
└──────────────────────────────┴───────────────────────────┘

toDate32OrZero

Introducido en: v21.9.0

Convierte un valor de entrada en un valor de tipo Date32, pero devuelve el valor predeterminado 1900-01-01 si se recibe un argumento no válido. Es igual que toDate32, pero devuelve 1900-01-01 si se recibe un argumento no válido. Tenga en cuenta que 1900-01-01 es un valor predeterminado histórico para entradas no válidas, no el límite inferior de Date32, que es 0000-01-01.

Véase también:

Sintaxis

toDate32OrZero(x)

Argumentos

  • x — La representación en cadena de una fecha. String

Valor devuelto

Devuelve un valor de Date32 si la operación se realiza correctamente; en caso contrario, el valor predeterminado histórico para una entrada no válida (1900-01-01). Date32

Ejemplos

Ejemplo de uso

SELECT toDate32OrZero('2025-01-01'), toDate32OrZero('')
┌─toDate32OrZero('2025-01-01')─┬─toDate32OrZero('')─┐
│                   2025-01-01 │         1900-01-01 │
└──────────────────────────────┴────────────────────┘

toDateOrDefault

Introducido en: v21.11.0

Como toDate, pero si falla, devuelve un valor predeterminado, que es el segundo argumento (si se especifica) o, de lo contrario, el límite inferior de Date.

Sintaxis

toDateOrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se puede realizar correctamente. Date

Valor devuelto

Un valor de tipo Date si la conversión se realiza correctamente; en caso contrario, devuelve el valor predeterminado si se proporciona, o 1970-01-01 si no. Date

Ejemplos

Conversión correcta

SELECT toDateOrDefault('2022-12-30')
2022-12-30

Conversión fallida

SELECT toDateOrDefault('', CAST('2023-01-01', 'Date'))
2023-01-01

toDateOrNull

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Date, pero devuelve NULL si recibe un argumento no válido. Igual que toDate, pero devuelve NULL si recibe un argumento no válido. Un argumento entero se interpreta de la misma manera que en toDate (como un número de días desde 1970-01-01 si no supera 65535; en caso contrario, como una marca temporal Unix) y devuelve NULL si queda fuera del rango del tipo Date.

Sintaxis

toDateOrNull(x)

Argumentos

  • x — Una representación en cadena de una fecha, o un número entero de días o una marca temporal Unix. String o (U)Int8/16/32/64

Valor devuelto

Devuelve un valor Date si la operación se realiza correctamente; de lo contrario, NULL. Date o NULL

Ejemplos

Ejemplo de uso

SELECT toDateOrNull('2025-12-30'), toDateOrNull('invalid')
┌─toDateOrNull('2025-12-30')─┬─toDateOrNull('invalid')─┐
│                 2025-12-30 │                    ᴺᵁᴸᴸ │
└────────────────────────────┴─────────────────────────┘

toDateOrZero

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Date, pero devuelve el límite inferior de Date si recibe un argumento no válido. Igual que toDate, pero devuelve el límite inferior de Date si recibe un argumento no válido.

Véase también:

Sintaxis

toDateOrZero(x)

Argumentos

  • x — Una representación en cadena de una fecha. String

Valor devuelto

Devuelve un valor de tipo Date si la operación se realiza correctamente; de lo contrario, devuelve el límite inferior de Date (1970-01-01). Date

Ejemplos

Ejemplo de uso

SELECT toDateOrZero('2025-12-30'), toDateOrZero('')
┌─toDateOrZero('2025-12-30')─┬─toDateOrZero('')─┐
│                 2025-12-30 │       1970-01-01 │
└────────────────────────────┴──────────────────┘

toDateTime

Introducido en: v1.1.0

Convierte un valor de entrada al tipo DateTime.

Sintaxis

toDateTime(expr[, time_zone])

Argumentos

Valor devuelto

Devuelve una fecha y hora. DateTime

Ejemplos

Ejemplo de uso

SELECT toDateTime('2025-01-01 00:00:00'), toDateTime(1735689600, 'UTC')
FORMAT Vertical
Row 1:
──────
toDateTime('2025-01-01 00:00:00'): 2025-01-01 00:00:00
toDateTime(1735689600, 'UTC'):     2025-01-01 00:00:00

toDateTime32

Introducido en: v20.9.0

Convierte un valor de entrada al tipo DateTime. Admite conversiones desde String, FixedString, Date, Date32, Time, DateTime, DateTime64 o tipos numéricos ((U)Int8, (U)Int16, (U)Int32, (U)Int64, BFloat16, Float32, Float64). Los valores Decimal y Time64 no son compatibles y generan una excepción; el tipo Time y los tipos de enteros de gran tamaño, como (U)Int128/(U)Int256, se desbordan en lugar de saturarse. DateTime32 es un alias de DateTime y admite fechas desde 1970-01-01 00:00:00 hasta 2106-02-07 06:28:15. Al convertir desde una cadena o desde uno de los tipos numéricos saturables enumerados anteriormente, los valores fuera de este intervalo se saturan en sus límites. Los valores de coma flotante no finitos (NaN, inf, -inf) no se pueden convertir y generan una excepción. Las conversiones desde otros tipos de fecha y hora, como Date32 o DateTime64, siguen la configuración date_time_overflow_behavior: el modo predeterminado ignore puede producir valores con desbordamiento, saturate los limita a los límites del intervalo y throw genera una excepción.

Sintaxis

toDateTime32(x[, timezone])

Argumentos

Valor devuelto

Devuelve el valor de entrada convertido. DateTime

Ejemplos

A partir de una cadena

SELECT toDateTime32('2025-01-01 00:00:00') AS value, toTypeName(value);
┌───────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00 │ DateTime          │
└─────────────────────┴───────────────────┘

A partir de una marca temporal Unix

SELECT toDateTime32(1735689600, 'UTC') AS value, toTypeName(value);
┌───────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00 │ DateTime('UTC')   │
└─────────────────────┴───────────────────┘

Con zona horaria

SELECT toDateTime32('2025-01-01 00:00:00', 'Asia/Istanbul') AS value, toTypeName(value);
┌───────────────value─┬─toTypeName(value)─────────┐
│ 2025-01-01 00:00:00 │ DateTime('Asia/Istanbul') │
└─────────────────────┴───────────────────────────┘

toDateTime64

Introducido en: v20.1.0

Convierte un valor de entrada en un valor del tipo DateTime64.

Sintaxis

toDateTime64(expr, scale[, timezone])

Argumentos

  • expr — Expresión que devuelve un número o su representación en cadena. Expresión
  • scale — Tamaño de tick (precisión): 10^(-scale) segundos. UInt8
  • timezone — Opcional. Zona horaria del objeto DateTime64 especificado. String

Valor devuelto

Devuelve una fecha y hora del calendario, con precisión de subsegundos. DateTime64

Ejemplos

El valor está dentro del rango

SELECT toDateTime64('2025-01-01 00:00:00.000', 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3)     │
└─────────────────────────┴───────────────────┘

Como Decimal con una precisión determinada

SELECT toDateTime64(1546300800.000, 3) AS value, toTypeName(value);
-- Without the decimal point the value is still treated as Unix Timestamp in seconds
SELECT toDateTime64(1546300800000, 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(value)─┐
│ 2019-01-01 00:00:00.000 │ DateTime64(3)     │
└─────────────────────────┴───────────────────┘
┌───────────────────value─┬─toTypeName(value)─┐
│ 9999-12-31 23:59:59.000 │ DateTime64(3)     │
└─────────────────────────┴───────────────────┘

Con zona horaria

SELECT toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul') AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(value)──────────────┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3, 'Asia/Istanbul') │
└─────────────────────────┴────────────────────────────────┘

toDateTime64OrDefault

Introducido en: v21.11.0

Al igual que toDateTime64, esta función convierte un valor de entrada en un valor del tipo DateTime64, pero devuelve el valor predeterminado de DateTime64 o el valor predeterminado proporcionado si recibe un argumento no válido.

Sintaxis

toDateTime64OrDefault(expr, scale[, timezone, default])

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. String o (U)Int* o Float*
  • scale — Tamaño del tick (precisión): 10^-precisión segundos. UInt8
  • timezone — Opcional. Zona horaria. String
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se realiza correctamente. DateTime64

Valor devuelto

Valor de tipo DateTime64 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporcionó o 1970-01-01 00:00:00.000 si no. DateTime64

Ejemplos

Conversión correcta

SELECT toDateTime64OrDefault('1976-10-18 00:00:00.30', 3)
1976-10-18 00:00:00.300

Conversión fallida

SELECT toDateTime64OrDefault('1976-10-18 00:00:00 30', 3, 'UTC', toDateTime64('2001-01-01 00:00:00.00',3))
2001-01-01 00:00:00.000

toDateTime64OrNull

Introducido en: v20.1.0

Convierte un valor de entrada en un valor de tipo DateTime64, pero devuelve NULL si recibe un argumento no válido. Es igual que toDateTime64, pero devuelve NULL si recibe un argumento no válido. Un argumento entero se interpreta como una marca temporal Unix en segundos enteros y devuelve NULL si está fuera del rango del tipo DateTime64.

Sintaxis

toDateTime64OrNull(x[, precision[, timezone]])

Argumentos

  • x — Una representación en cadena de una fecha con hora y precisión de subsegundos, o una marca temporal Unix entera. String o (U)Int8/16/32/64
  • precision — Opcional. La precisión de subsegundos del valor devuelto. UInt8
  • timezone — Opcional. La zona horaria del valor devuelto. String

Valor devuelto

Devuelve un valor DateTime64 si la operación se realiza correctamente; en caso contrario, NULL. DateTime64 o NULL

Ejemplos

Ejemplo de uso

SELECT toDateTime64OrNull('2025-12-30 13:44:17.123'), toDateTime64OrNull('invalid')
┌─toDateTime64OrNull('2025-12-30 13:44:17.123')─┬─toDateTime64OrNull('invalid')─┐
│                       2025-12-30 13:44:17.123 │                          ᴺᵁᴸᴸ │
└───────────────────────────────────────────────┴───────────────────────────────┘

toDateTime64OrZero

Introducido en: v20.1.0

Convierte un valor de entrada en un valor del tipo DateTime64, pero devuelve el límite inferior de DateTime64 si recibe un argumento no válido. Es igual que toDateTime64, pero devuelve el límite inferior de DateTime64 si recibe un argumento no válido.

Véase también:

Sintaxis

toDateTime64OrZero(x)

Argumentos

  • x — Una representación en cadena de una fecha y hora con precisión de subsegundos. String

Valor devuelto

Devuelve un valor DateTime64 si la operación se realiza correctamente; de lo contrario, devuelve el límite inferior de DateTime64 (1970-01-01 00:00:00.000). DateTime64

Ejemplos

Ejemplo de uso

SELECT toDateTime64OrZero('2025-12-30 13:44:17.123'), toDateTime64OrZero('invalid')
┌─toDateTime64OrZero('2025-12-30 13:44:17.123')─┬─toDateTime64OrZero('invalid')─┐
│                       2025-12-30 13:44:17.123 │       1970-01-01 00:00:00.000 │
└───────────────────────────────────────────────┴───────────────────────────────┘

toDateTimeOrDefault

Introducido en: v21.11.0

Como toDateTime, pero, si falla, devuelve un valor predeterminado, que es el tercer argumento (si se especifica) o, de lo contrario, el límite inferior de DateTime.

Sintaxis

toDateTimeOrDefault(expr[, timezone, default])

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. String o (U)Int* o Float*
  • timezone — Opcional. Zona horaria. String
  • default — Opcional. El valor predeterminado que se devuelve si el análisis falla. DateTime

Valor devuelto

Valor de tipo DateTime si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporciona, o 1970-01-01 00:00:00 si no. DateTime

Ejemplos

Conversión correcta

SELECT toDateTimeOrDefault('2022-12-30 13:44:17')
2022-12-30 13:44:17

Conversión fallida

SELECT toDateTimeOrDefault('', 'UTC', CAST('2023-01-01', 'DateTime(\'UTC\')'))
2023-01-01 00:00:00

toDateTimeOrNull

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo DateTime, pero devuelve NULL si recibe un argumento no válido. Es igual que toDateTime, pero devuelve NULL si recibe un argumento no válido. Un argumento entero se interpreta como una marca de tiempo Unix y produce NULL si está fuera del intervalo del tipo DateTime.

Sintaxis

toDateTimeOrNull(x[, timezone])

Argumentos

  • x — Una representación en cadena de una fecha con hora, o una marca de tiempo Unix entera. String o (U)Int8/16/32/64
  • timezone — Opcional. Zona horaria del valor devuelto. String

Valor devuelto

Devuelve un valor DateTime si tiene éxito; de lo contrario, NULL. DateTime o NULL

Ejemplos

Ejemplo de uso

SELECT toDateTimeOrNull('2025-12-30 13:44:17'), toDateTimeOrNull('invalid')
┌─toDateTimeOrNull('2025-12-30 13:44:17')─┬─toDateTimeOrNull('invalid')─┐
│                     2025-12-30 13:44:17 │                        ᴺᵁᴸᴸ │
└─────────────────────────────────────────┴─────────────────────────────┘

Argumento entero con zona horaria

SELECT toDateTimeOrNull(1583851242, 'Asia/Shanghai'), toDateTimeOrNull(4294967296)
┌─toDateTimeOrNull(1583851242, 'Asia/Shanghai')─┬─toDateTimeOrNull(4294967296)─┐
│                           2020-03-10 22:40:42 │                         ᴺᵁᴸᴸ │
└───────────────────────────────────────────────┴──────────────────────────────┘

toDateTimeOrZero

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo DateTime, pero devuelve el límite inferior de DateTime si recibe un argumento no válido. Es igual que toDateTime, pero devuelve el límite inferior de DateTime si recibe un argumento no válido.

Sintaxis

toDateTimeOrZero(x)

Argumentos

  • x — Una representación en cadena de una fecha con hora. String

Valor devuelto

Devuelve un valor DateTime si la conversión se realiza correctamente; de lo contrario, devuelve el límite inferior de DateTime (1970-01-01 00:00:00). DateTime

Ejemplos

Ejemplo de uso

SELECT toDateTimeOrZero('2025-12-30 13:44:17'), toDateTimeOrZero('invalid')
┌─toDateTimeOrZero('2025-12-30 13:44:17')─┬─toDateTimeOrZero('invalid')─┐
│                     2025-12-30 13:44:17 │         1970-01-01 00:00:00 │
└─────────────────────────────────────────┴─────────────────────────────┘

toDecimal128

Introducido en: v18.12.0

Convierte un valor de entrada en un valor del tipo Decimal(38, S) con escala S. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos:

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinguir entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toDecimal128('0xc0fe', 1);.

Sintaxis

toDecimal128(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expresión
  • S — Parámetro de escala entre 0 y 38, que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor de tipo Decimal(38, S) Decimal128(S)

Ejemplos

Ejemplo de uso

SELECT
    toDecimal128(99, 1) AS a, toTypeName(a) AS type_a,
    toDecimal128(99.67, 2) AS b, toTypeName(b) AS type_b,
    toDecimal128('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      99
type_a: Decimal(38, 1)
b:      99.67
type_b: Decimal(38, 2)
c:      99.67
type_c: Decimal(38, 3)

toDecimal128OrDefault

Introducido en: v21.11.0

Al igual que toDecimal128, esta función convierte un valor de entrada a un valor de tipo Decimal(38, S), pero devuelve el valor predeterminado en caso de error.

Sintaxis

toDecimal128OrDefault(expr, S[, default])

Argumentos

  • expr — Una representación en forma de String de un número. String
  • S — Parámetro de escala entre 0 y 38 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8
  • default — Opcional. El valor predeterminado que se devolverá si la conversión al tipo Decimal128(S) no se realiza correctamente. Decimal128(S)

Valor devuelto

Un valor de tipo Decimal(38, S) si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporcionó o 0 si no. Decimal128(S)

Ejemplos

Conversión exitosa

SELECT toDecimal128OrDefault(toString(1/42), 18)
0.023809523809523808

Conversión fallida

SELECT toDecimal128OrDefault('Inf', 0, CAST('-1', 'Decimal128(0)'))
-1

toDecimal128OrNull

Introducido en: v20.1.0

Convierte un valor de entrada en un valor del tipo Decimal(38, S), pero devuelve NULL en caso de error. Como toDecimal128, pero devuelve NULL en lugar de lanzar una excepción si se producen errores de conversión.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos (devuelven NULL):

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinguir entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales.
  • Valores que superan los límites de Decimal128:(-1*10^(38 - S), 1*10^(38 - S)).

Véase también:

Sintaxis

toDecimal128OrNull(expr, S)

Argumentos

  • expr — expresión que devuelve un número o la representación en cadena de un número. Expresión
  • S — Parámetro de escala entre 0 y 38 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor Decimal(38, S) si tiene éxito; en caso contrario, NULL. Decimal128(S) o NULL

Ejemplos

Ejemplo de uso

SELECT toDecimal128OrNull('42.7', 2), toDecimal128OrNull('invalid', 2)
┌─toDecimal128OrNull('42.7', 2)─┬─toDecimal128OrNull('invalid', 2)─┐
│                          42.7 │                             ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal128OrZero

Introducido en: v20.1.0

Convierte un valor de entrada en un valor del tipo Decimal(38, S), pero devuelve 0 en caso de error. Es similar a toDecimal128, pero devuelve 0 en lugar de generar una excepción cuando se producen errores de conversión.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos (devuelven 0):

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinguir entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales.

Sintaxis

toDecimal128OrZero(expr, S)

Argumentos

  • expr — expresión que devuelve un número o la representación en cadena de un número. Expresión
  • S — Parámetro de escala entre 0 y 38 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor Decimal(38, S) si la operación se realiza correctamente; en caso contrario, 0. Decimal128(S)

Ejemplos

Uso básico

SELECT toDecimal128OrZero('42.7', 2), toDecimal128OrZero('invalid', 2)
┌─toDecimal128OrZero('42.7', 2)─┬─toDecimal128OrZero('invalid', 2)─┐
│                          42.7 │                                0 │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal256

Introducido en: v20.8.0

Convierte un valor de entrada en un valor de tipo Decimal(76, S) con escala S. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos:

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinción entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toDecimal256('0xc0fe', 1);.

Sintaxis

toDecimal256(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. Expresión
  • S — Parámetro de escala entre 0 y 76 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor de tipo Decimal(76, S). Decimal256(S)

Ejemplos

Ejemplo de uso

SELECT
    toDecimal256(99, 1) AS a, toTypeName(a) AS type_a,
    toDecimal256(99.67, 2) AS b, toTypeName(b) AS type_b,
    toDecimal256('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      99
type_a: Decimal(76, 1)
b:      99.67
type_b: Decimal(76, 2)
c:      99.67
type_c: Decimal(76, 3)

toDecimal256OrDefault

Introducido en: v21.11.0

Al igual que toDecimal256, esta función convierte un valor de entrada en un valor de tipo Decimal(76, S), pero devuelve el valor predeterminado en caso de error.

Sintaxis

toDecimal256OrDefault(expr, S[, default])

Argumentos

  • expr — Una representación en cadena de un número. String
  • S — Parámetro de escala entre 0 y 76 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8
  • default — Opcional. El valor predeterminado que se devolverá si no se puede convertir al tipo Decimal256(S). Decimal256(S)

Valor devuelto

Un valor de tipo Decimal(76, S) si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporcionó, o 0 si no. Decimal256(S)

Ejemplos

Conversión exitosa

SELECT toDecimal256OrDefault(toString(1/42), 76)
0.023809523809523808

Error de conversión

SELECT toDecimal256OrDefault('Inf', 0, CAST('-1', 'Decimal256(0)'))
-1

toDecimal256OrNull

Introducido en: v20.8.0

Convierte un valor de entrada a un valor de tipo Decimal(76, S), pero devuelve NULL en caso de error. Es como toDecimal256, pero devuelve NULL en lugar de generar una excepción cuando se producen errores de conversión.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos (devuelven NULL):

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinguir entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales.
  • Valores que superan los límites de Decimal256: (-1 * 10^(76 - S), 1 * 10^(76 - S)).

Véase también:

Sintaxis

toDecimal256OrNull(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expression
  • S — Parámetro de escala entre 0 y 76 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor Decimal(76, S) si la conversión se realiza correctamente; en caso contrario, NULL. Decimal256(S) o NULL

Ejemplos

Ejemplo de uso

SELECT toDecimal256OrNull('42.7', 2), toDecimal256OrNull('invalid', 2)
┌─toDecimal256OrNull('42.7', 2)─┬─toDecimal256OrNull('invalid', 2)─┐
│                          42.7 │                             ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal256OrZero

Introducido en: v20.8.0

Convierte un valor de entrada en un valor de tipo Decimal(76, S), pero devuelve 0 en caso de error. Es similar a toDecimal256, pero devuelve 0 en lugar de generar una excepción cuando se producen errores de conversión.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos (devuelven 0):

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinguir mayúsculas de minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales.

Véase también:

Sintaxis

toDecimal256OrZero(expr, S)

Argumentos

  • expr — expresión que devuelve un número o la representación en cadena de un número. Expresión
  • S — Parámetro de escala entre 0 y 76 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor Decimal(76, S) si la operación se realiza correctamente; en caso contrario, 0. Decimal256(S)

Ejemplos

Ejemplo de uso

SELECT toDecimal256OrZero('42.7', 2), toDecimal256OrZero('invalid', 2)
┌─toDecimal256OrZero('42.7', 2)─┬─toDecimal256OrZero('invalid', 2)─┐
│                          42.7 │                                0 │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal32

Introducido en: v18.12.0

Convierte un valor de entrada en un valor de tipo Decimal(9, S) con una escala de S. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos:

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinguir entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales, por ejemplo, SELECT toDecimal32('0xc0fe', 1);.

Sintaxis

toDecimal32(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. Expresión
  • S — Parámetro de escala entre 0 y 9 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor de tipo Decimal(9, S) Decimal32(S)

Ejemplos

Ejemplo de uso

SELECT
    toDecimal32(2, 1) AS a, toTypeName(a) AS type_a,
    toDecimal32(4.2, 2) AS b, toTypeName(b) AS type_b,
    toDecimal32('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      2
type_a: Decimal(9, 1)
b:      4.2
type_b: Decimal(9, 2)
c:      4.2
type_c: Decimal(9, 3)

toDecimal32OrDefault

Introducido en: v21.11.0

Al igual que toDecimal32, esta función convierte un valor de entrada en un valor del tipo Decimal(9, S), pero devuelve el valor predeterminado en caso de error.

Sintaxis

toDecimal32OrDefault(expr, S[, default])

Argumentos

  • expr — Una representación en String de un número. String
  • S — Parámetro de escala entre 0 y 9 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8
  • default — Opcional. El valor predeterminado que se devuelve si no es posible interpretar el valor como el tipo Decimal32(S). Decimal32(S)

Valor devuelto

Un valor de tipo Decimal(9, S) si la conversión se realiza correctamente; en caso contrario, devuelve el valor predeterminado si se proporcionó o 0 si no. Decimal32(S)

Ejemplos

Conversión correcta

SELECT toDecimal32OrDefault(toString(0.0001), 5)
0.0001

Error de conversión

SELECT toDecimal32OrDefault('Inf', 0, CAST('-1', 'Decimal32(0)'))
-1

toDecimal32OrNull

Introducido en: v20.1.0

Convierte un valor de entrada en un valor de tipo Decimal(9, S), pero devuelve NULL en caso de error. Es similar a toDecimal32, pero devuelve NULL en lugar de lanzar una excepción en caso de errores de conversión.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos (devuelven NULL):

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinción entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales.
  • Valores que superan los límites de Decimal32:(-1*10^(9 - S), 1*10^(9 - S)).

Véase también:

Sintaxis

toDecimal32OrNull(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expression
  • S — Parámetro de escala entre 0 y 9 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor Decimal(9, S) si la operación se realiza correctamente; en caso contrario, NULL. Decimal32(S) o NULL

Ejemplos

Ejemplo de uso

SELECT toDecimal32OrNull('42.7', 2), toDecimal32OrNull('invalid', 2)
┌─toDecimal32OrNull('42.7', 2)─┬─toDecimal32OrNull('invalid', 2)─┐
│                         42.7 │                            ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal32OrZero

Introducido en: v20.1.0

Convierte un valor de entrada en un valor del tipo Decimal(9, S), pero devuelve 0 en caso de error. Es como toDecimal32, pero devuelve 0 en lugar de lanzar una excepción cuando se producen errores de conversión.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos (devuelven 0):

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinción entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales.

Sintaxis

toDecimal32OrZero(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena. Expression
  • S — Parámetro de escala entre 0 y 9 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor Decimal(9, S) si tiene éxito; de lo contrario, 0. Decimal32(S)

Ejemplos

Ejemplo de uso

SELECT toDecimal32OrZero('42.7', 2), toDecimal32OrZero('invalid', 2)
┌─toDecimal32OrZero('42.7', 2)─┬─toDecimal32OrZero('invalid', 2)─┐
│                         42.7 │                               0 │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal64

Introducido en: v18.12.0

Convierte un valor de entrada en un valor de tipo Decimal(18, S) con una escala de S. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos:

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinción entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toDecimal64('0xc0fe', 1);.

Sintaxis

toDecimal64(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena. Expression
  • S — Parámetro de escala entre 0 y 18 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor decimal. Decimal(18, S)

Ejemplos

Ejemplo de uso

SELECT
    toDecimal64(2, 1) AS a, toTypeName(a) AS type_a,
    toDecimal64(4.2, 2) AS b, toTypeName(b) AS type_b,
    toDecimal64('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      2
type_a: Decimal(18, 1)
b:      4.2
type_b: Decimal(18, 2)
c:      4.2
type_c: Decimal(18, 3)

toDecimal64OrDefault

Introducido en: v21.11.0

Al igual que toDecimal64, esta función convierte un valor de entrada a un valor del tipo Decimal(18, S), pero devuelve el valor predeterminado en caso de error.

Sintaxis

toDecimal64OrDefault(expr, S[, default])

Argumentos

  • expr — Una representación en String de un número. String
  • S — Parámetro de escala entre 0 y 18 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8
  • default — Opcional. El valor predeterminado que se devuelve si no se puede convertir al tipo Decimal64(S). Decimal64(S)

Valor devuelto

Un valor de tipo Decimal(18, S) si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporcionó, o 0 si no. Decimal64(S)

Ejemplos

Conversión correcta

SELECT toDecimal64OrDefault(toString(0.0001), 18)
0.0001

Conversión fallida

SELECT toDecimal64OrDefault('Inf', 0, CAST('-1', 'Decimal64(0)'))
-1

toDecimal64OrNull

Introducido en: v20.1.0

Convierte un valor de entrada en un valor de tipo Decimal(18, S), pero devuelve NULL en caso de error. Igual que toDecimal64, pero devuelve NULL en lugar de lanzar una excepción cuando se producen errores de conversión.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos (devuelven NULL):

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinción entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales.
  • Valores que superan los límites de Decimal64:(-1*10^(18 - S), 1*10^(18 - S)).

Véase también:

Sintaxis

toDecimal64OrNull(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. Expression
  • S — Parámetro de escala entre 0 y 18 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor Decimal(18, S) si la operación se realiza correctamente; de lo contrario, NULL. Decimal64(S) o NULL

Ejemplos

Ejemplo de uso

SELECT toDecimal64OrNull('42.7', 2), toDecimal64OrNull('invalid', 2)
┌─toDecimal64OrNull('42.7', 2)─┬─toDecimal64OrNull('invalid', 2)─┐
│                         42.7 │                            ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal64OrZero

Introducido en: v20.1.0

Convierte un valor de entrada en un valor de tipo Decimal(18, S), pero devuelve 0 en caso de error. Igual que toDecimal64, pero devuelve 0 en lugar de lanzar una excepción si se producen errores de conversión.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores o representaciones en cadena del tipo Float*.

Argumentos no admitidos (devuelven 0):

  • Valores o representaciones en cadena de valores Float* NaN e Inf (sin distinción entre mayúsculas y minúsculas).
  • Representaciones en cadena de valores binarios y hexadecimales.

Véase también:

Sintaxis

toDecimal64OrZero(expr, S)

Argumentos

  • expr — Expresión que devuelve un número o su representación en cadena. Expression
  • S — Parámetro de escala entre 0 y 18 que especifica cuántos dígitos puede tener la parte fraccionaria de un número. UInt8

Valor devuelto

Devuelve un valor Decimal(18, S) si la operación se realiza correctamente; de lo contrario, 0. Decimal64(S)

Ejemplos

Ejemplo de uso

SELECT toDecimal64OrZero('42.7', 2), toDecimal64OrZero('invalid', 2)
┌─toDecimal64OrZero('42.7', 2)─┬─toDecimal64OrZero('invalid', 2)─┐
│                         42.7 │                               0 │
└──────────────────────────────┴─────────────────────────────────┘

toDecimalString

Introducido en: v23.3.0

Convierte un valor numérico a String con el número especificado de dígitos fraccionarios.

La función redondea el valor de entrada al número especificado de posiciones decimales. Si el valor de entrada tiene menos dígitos fraccionarios de los solicitados, el resultado se rellena con ceros hasta alcanzar el número exacto de dígitos fraccionarios especificado.

Sintaxis

toDecimalString(number, scale)

Argumentos

  • number — El valor numérico que se convertirá en una cadena. Puede ser cualquier tipo numérico (Int, UInt, Float, Decimal). Int8 o Int16 o Int32 o Int64 o UInt8 o UInt16 o UInt32 o UInt64 o Float32 o Float64 o Decimal
  • scale — El número de dígitos que se mostrarán en la parte fraccionaria. El resultado se redondeará si es necesario. UInt8

Valor devuelto

Devuelve una representación del número en String con exactamente el número especificado de dígitos fraccionarios. String

Ejemplos

Redondear y dar formato a un número

SELECT toDecimalString(2.1456, 2)
┌─toDecimalString(2.1456, 2)─┐
│ 2.15                       │
└────────────────────────────┘

Completar con ceros

SELECT toDecimalString(5, 3)
┌─toDecimalString(5, 3)─┐
│ 5.000                 │
└───────────────────────┘

Distintos tipos numéricos

SELECT toDecimalString(CAST(123.456 AS Decimal(10,3)), 2) AS decimal_val,
       toDecimalString(CAST(42.7 AS Float32), 4) AS float_val
┌─decimal_val─┬─float_val─┐
│ 123.46      │ 42.7000   │
└─────────────┴───────────┘

toFixedString

Introducido en: v1.1.0

Convierte un argumento String en un tipo FixedString(N) (una cadena de longitud fija N).

Si la cadena tiene menos bytes que N, se rellena con bytes nulos a la derecha. Si la cadena tiene más bytes que N, se lanza una excepción.

Sintaxis

toFixedString(s, N)

Argumentos

  • s — Cadena que se va a convertir. String
  • N — Longitud del FixedString resultante. const UInt*

Valor devuelto

Devuelve un FixedString de longitud N. FixedString(N)

Ejemplos

Ejemplo de uso

-- The padding is made of null bytes, so the result is shown with `hex`.
SELECT hex(toFixedString('foo', 8)) AS s;
┌─s────────────────┐
│ 666F6F0000000000 │
└──────────────────┘

toFloat32

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Float32. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores de tipo (U)Int*.
  • Representaciones de cadena de (U)Int8/16/32/128/256.
  • Valores de tipo Float*, incluidos NaN e Inf.
  • Representaciones de cadena de Float*, incluidos NaN e Inf (sin distinción entre mayúsculas y minúsculas).

Argumentos no admitidos:

  • Representaciones de cadena de valores binarios y hexadecimales; por ejemplo, SELECT toFloat32('0xc0fe');.

Véase también:

Sintaxis

toFloat32(expr)

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. Expression

Valor devuelto

Devuelve un valor de punto flotante de 32 bits. Float32

Ejemplos

Ejemplo de uso

SELECT
    toFloat32(42.7),
    toFloat32('42.7'),
    toFloat32('NaN')
FORMAT Vertical
Row 1:
──────
toFloat32(42.7):   42.7
toFloat32('42.7'): 42.7
toFloat32('NaN'):  nan

toFloat32OrDefault

Introducido en: v21.11.0

Al igual que toFloat32, esta función convierte un valor de entrada en un valor de tipo Float32, pero devuelve el valor predeterminado en caso de error. Si no se pasa ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toFloat32OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devolverá si el análisis falla. Float32

Valor devuelto

Devuelve un valor de tipo Float32 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporcionó, o 0 si no. Float32

Ejemplos

Conversión correcta

SELECT toFloat32OrDefault('8', CAST('0', 'Float32'))
8

Conversión fallida

SELECT toFloat32OrDefault('abc', CAST('0', 'Float32'))
0

toFloat32OrNull

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Float32, pero devuelve NULL en caso de error. Como toFloat32, pero devuelve NULL en lugar de lanzar una excepción si se produce un error de conversión.

Argumentos admitidos:

  • Valores de tipo (U)Int*.
  • Representaciones en cadena de (U)Int8/16/32/128/256.
  • Valores de tipo Float*, incluidos NaN e Inf.
  • Representaciones en cadena de Float*, incluidos NaN e Inf (sin distinción entre mayúsculas y minúsculas).

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toFloat32OrNull('0xc0fe');.
  • Formatos de cadena no válidos.

Véase también:

Sintaxis

toFloat32OrNull(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de coma flotante de 32 bits si la operación se realiza correctamente; de lo contrario, NULL. Float32 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toFloat32OrNull('42.7'),
    toFloat32OrNull('NaN'),
    toFloat32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toFloat32OrNull('42.7'): 42.7
toFloat32OrNull('NaN'):  nan
toFloat32OrNull('abc'):  ᴺᵁᴸᴸ

toFloat32OrZero

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Float32, pero devuelve 0 en caso de error. Es como toFloat32, pero devuelve 0 en lugar de lanzar una excepción cuando se producen errores de conversión.

Véase también:

Sintaxis

toFloat32OrZero(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de coma flotante de 32 bits si la operación se realiza correctamente; en caso contrario, 0. Float32

Ejemplos

Ejemplo de uso

SELECT
    toFloat32OrZero('42.7'),
    toFloat32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toFloat32OrZero('42.7'): 42.7
toFloat32OrZero('abc'):  0

toFloat64

Introducido en: v1.1.0

Convierte un valor de entrada en un valor del tipo Float64. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores de tipo (U)Int*.
  • Representaciones de cadena de (U)Int8/16/32/128/256.
  • Valores de tipo Float*, incluidos NaN e Inf.
  • Representaciones de cadena del tipo Float*, incluidos NaN e Inf (sin distinguir entre mayúsculas y minúsculas).

Argumentos no admitidos:

  • Representaciones de cadena de valores binarios y hexadecimales, por ejemplo, SELECT toFloat64('0xc0fe');.

Véase también:

Sintaxis

toFloat64(expr)

Argumentos

  • expr — Expresión que devuelve un número o su representación en cadena. Expresión

Valor devuelto

Devuelve un valor de punto flotante de 64 bits. Float64

Ejemplos

Ejemplo de uso

SELECT
    toFloat64(42.7),
    toFloat64('42.7'),
    toFloat64('NaN')
FORMAT Vertical
Row 1:
──────
toFloat64(42.7):   42.7
toFloat64('42.7'): 42.7
toFloat64('NaN'):  nan

toFloat64OrDefault

Introducido en: v21.11.0

Al igual que toFloat64, esta función convierte un valor de entrada en un valor de tipo Float64, pero devuelve el valor por defecto en caso de error. Si no se proporciona ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toFloat64OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se realiza correctamente. Float64

Valor devuelto

Devuelve un valor de tipo Float64 si la operación se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporciona, o 0 en caso contrario. Float64

Ejemplos

Conversión correcta

SELECT toFloat64OrDefault('8', CAST('0', 'Float64'))
8

Error de conversión

SELECT toFloat64OrDefault('abc', CAST('0', 'Float64'))
0

toFloat64OrNull

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Float64, pero devuelve NULL en caso de error. Como toFloat64, pero devuelve NULL en lugar de lanzar una excepción si se producen errores de conversión.

Argumentos admitidos:

  • Valores de tipo (U)Int*.
  • Representaciones de cadena de (U)Int8/16/32/128/256.
  • Valores de tipo Float*, incluidos NaN e Inf.
  • Representaciones de cadena del tipo Float*, incluidos NaN e Inf (sin distinguir entre mayúsculas y minúsculas).

Argumentos no admitidos (devuelven NULL):

  • Representaciones de cadena de valores binarios y hexadecimales, p. ej., SELECT toFloat64OrNull('0xc0fe');.
  • Formatos de cadena no válidos.

Véase también:

Sintaxis

toFloat64OrNull(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de coma flotante de 64 bits si la conversión se realiza correctamente; en caso contrario, NULL. Float64 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toFloat64OrNull('42.7'),
    toFloat64OrNull('NaN'),
    toFloat64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toFloat64OrNull('42.7'): 42.7
toFloat64OrNull('NaN'):  nan
toFloat64OrNull('abc'):  ᴺᵁᴸᴸ

toFloat64OrZero

Introducido en: v1.1.0

Convierte un valor de entrada a un valor de tipo Float64, pero devuelve 0 en caso de error. Al igual que toFloat64, pero devuelve 0 en lugar de lanzar una excepción si se producen errores de conversión.

Vea también:

Sintaxis

toFloat64OrZero(x)

Argumentos

  • x — La representación textual de un número. String

Valor devuelto

Devuelve un valor de coma flotante de 64 bits si la operación se realiza correctamente; en caso contrario, 0. Float64

Ejemplos

Ejemplo de uso

SELECT
    toFloat64OrZero('42.7'),
    toFloat64OrZero('abc')
FORMAT Vertical
Row 1:
──────
toFloat64OrZero('42.7'): 42.7
toFloat64OrZero('abc'):  0

toInt128

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Int128. Lanza una excepción si se produce un error. La función redondea hacia cero; es decir, trunca los dígitos fraccionarios de los números.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt128('0xc0fe');.

Véase también:

Sintaxis

toInt128(expr)

Argumentos

  • expr — expresión que devuelve un número o la representación en cadena de un número. Expresión

Valor devuelto

Devuelve un valor entero de 128 bits. Int128

Ejemplos

Ejemplo de uso

SELECT
    toInt128(-128),
    toInt128(-128.8),
    toInt128('-128')
FORMAT Vertical
Row 1:
──────
toInt128(-128):   -128
toInt128(-128.8): -128
toInt128('-128'): -128

toInt128OrDefault

Introducido en: v21.11.0

Al igual que toInt128, esta función convierte un valor de entrada en un valor de tipo Int128, pero devuelve el valor predeterminado si se produce un error. Si no se proporciona ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toInt128OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis falla. Int128

Valor devuelto

Devuelve un valor de tipo Int128 si la operación se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporciona, o 0 si no. Int128

Ejemplos

Conversión correcta

SELECT toInt128OrDefault('-128', CAST('-1', 'Int128'))
-128

Conversión fallida

SELECT toInt128OrDefault('abc', CAST('-1', 'Int128'))
-1

toInt128OrNull

Introducido en: v20.8.0

Al igual que toInt128, esta función convierte un valor de entrada en un valor de tipo Int128, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt128OrNull('0xc0fe');.

Véase también:

Sintaxis

toInt128OrNull(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int128, o NULL si la conversión no se realiza correctamente. Int128 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toInt128OrNull('-128'),
    toInt128OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt128OrNull('-128'): -128
toInt128OrNull('abc'):  ᴺᵁᴸᴸ

toInt128OrZero

Introducido en: v20.8.0

Convierte un valor de entrada al tipo Int128, pero devuelve 0 en caso de error. Es como toInt128, pero devuelve 0 en lugar de lanzar una excepción.

Véase también:

Sintaxis

toInt128OrZero(x)

Argumentos

Valor devuelto

Devuelve el valor de entrada convertido o 0 si la conversión falla. Int128

Ejemplos

Ejemplo de uso

SELECT toInt128OrZero('123')
123

Si la conversión falla, devuelve cero

SELECT toInt128OrZero('abc')
0

toInt16

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Int16. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt16('0xc0fe');.

Véase también:

Sintaxis

toInt16(expr)

Argumentos

  • expr — expresión que devuelve un número o la representación en cadena de un número. expresión

Valor devuelto

Devuelve un valor entero de 16 bits. Int16

Ejemplos

Ejemplo de uso

SELECT
    toInt16(-16),
    toInt16(-16.16),
    toInt16('-16')
FORMAT Vertical
Row 1:
──────
toInt16(-16):    -16
toInt16(-16.16): -16
toInt16('-16'):  -16

toInt16OrDefault

Introducido en: v21.11.0

Al igual que toInt16, esta función convierte un valor de entrada en un valor de tipo Int16, pero devuelve el valor por defecto en caso de error. Si no se pasa ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toInt16OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se realiza correctamente. Int16

Valor devuelto

Devuelve un valor de tipo Int16 si la operación se realiza correctamente; de lo contrario, devuelve el valor predeterminado, si se proporciona, o 0 si no. Int16

Ejemplos

Conversión correcta

SELECT toInt16OrDefault('-16', CAST('-1', 'Int16'))
-16

Conversión fallida

SELECT toInt16OrDefault('abc', CAST('-1', 'Int16'))
-1

toInt16OrNull

Introducido en: v1.1.0

Al igual que toInt16, esta función convierte un valor de entrada en un valor de tipo Int16, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt16OrNull('0xc0fe');.

Véase también:

Sintaxis

toInt16OrNull(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int16 o NULL si la conversión no se realiza correctamente. Int16 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toInt16OrNull('-16'),
    toInt16OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt16OrNull('-16'): -16
toInt16OrNull('abc'): ᴺᵁᴸᴸ

toInt16OrZero

Introducido en: v1.1.0

Al igual que toInt16, esta función convierte un valor de entrada en un valor del tipo Int16, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales, por ejemplo, SELECT toInt16OrZero('0xc0fe');.

Véase también:

Sintaxis

toInt16OrZero(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int16 o 0 si la conversión no se realiza correctamente. Int16

Ejemplos

Ejemplo de uso

SELECT
    toInt16OrZero('16'),
    toInt16OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt16OrZero('16'):  16
toInt16OrZero('abc'): 0

toInt256

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Int256. Lanza una excepción en caso de error. La función usa redondeo hacia cero, es decir, trunca los dígitos fraccionarios de los números.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores de tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales, por ejemplo, SELECT toInt256('0xc0fe');.

Véase también:

Sintaxis

toInt256(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expresión

Valor devuelto

Devuelve un valor entero de 256 bits. Int256

Ejemplos

Ejemplo de uso

SELECT
    toInt256(-256),
    toInt256(-256.256),
    toInt256('-256')
FORMAT Vertical
Row 1:
──────
toInt256(-256):     -256
toInt256(-256.256): -256
toInt256('-256'):   -256

toInt256OrDefault

Introducido en: v21.11.0

Al igual que toInt256, esta función convierte un valor de entrada en un valor de tipo Int256, pero devuelve el valor predeterminado en caso de producirse un error. Si no se proporciona ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toInt256OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se realiza correctamente. Int256

Valor devuelto

Devuelve un valor de tipo Int256 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporciona, o 0 si no. Int256

Ejemplos

Conversión correcta

SELECT toInt256OrDefault('-256', CAST('-1', 'Int256'))
-256

Conversión fallida

SELECT toInt256OrDefault('abc', CAST('-1', 'Int256'))
-1

toInt256OrNull

Introducido en: v20.8.0

Al igual que toInt256, esta función convierte un valor de entrada en un valor de tipo Int256, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt256OrNull('0xc0fe');.

Véase también:

Sintaxis

toInt256OrNull(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int256 o NULL si la conversión no se realiza correctamente. Int256 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toInt256OrNull('-256'),
    toInt256OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt256OrNull('-256'): -256
toInt256OrNull('abc'):  ᴺᵁᴸᴸ

toInt256OrZero

Introducido en: v20.8.0

Convierte un valor de entrada al tipo Int256, pero devuelve 0 en caso de error. Igual que toInt256, pero devuelve 0 en lugar de generar una excepción.

Véase también:

Sintaxis

toInt256OrZero(x)

Argumentos

Valor devuelto

Devuelve el valor de entrada convertido o 0 si la conversión falla. Int256

Ejemplos

Ejemplo de uso

SELECT toInt256OrZero('123')
123

Si falla la conversión, devuelve cero

SELECT toInt256OrZero('abc')
0

toInt32

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Int32. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales, por ejemplo, SELECT toInt32('0xc0fe');.

Véase también:

Sintaxis

toInt32(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expresión

Valor devuelto

Devuelve un valor entero de 32 bits. Int32

Ejemplos

Ejemplo de uso

SELECT
    toInt32(-32),
    toInt32(-32.32),
    toInt32('-32')
FORMAT Vertical
Row 1:
──────
toInt32(-32):    -32
toInt32(-32.32): -32
toInt32('-32'):  -32

toInt32OrDefault

Introducido en: v21.11.0

Al igual que toInt32, esta función convierte un valor de entrada en un valor de tipo Int32, pero devuelve el valor predeterminado en caso de error. Si no se pasa ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toInt32OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no es correcto. Int32

Valor devuelto

Devuelve un valor de tipo Int32 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporciona, o 0 en caso contrario. Int32

Ejemplos

Conversión correcta

SELECT toInt32OrDefault('-32', CAST('-1', 'Int32'))
-32

Error de conversión

SELECT toInt32OrDefault('abc', CAST('-1', 'Int32'))
-1

toInt32OrNull

Introducido en: v1.1.0

Al igual que toInt32, esta función convierte un valor de entrada en un valor de tipo Int32, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt32OrNull('0xc0fe');.

Véase también:

Sintaxis

toInt32OrNull(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int32 o NULL si la conversión no se realiza correctamente. Int32 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toInt32OrNull('-32'),
    toInt32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt32OrNull('-32'): -32
toInt32OrNull('abc'): ᴺᵁᴸᴸ

toInt32OrZero

Introducido en: v1.1.0

Al igual que toInt32, esta función convierte un valor de entrada en un valor de tipo Int32, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt32OrZero('0xc0fe');.

Véase también:

Sintaxis

toInt32OrZero(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int32 o 0 si la conversión no se realiza correctamente. Int32

Ejemplos

Ejemplo de uso

SELECT
    toInt32OrZero('32'),
    toInt32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt32OrZero('32'):  32
toInt32OrZero('abc'): 0

toInt64

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Int64. Lanza una excepción si se produce un error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales, por ejemplo, SELECT toInt64('0xc0fe');.

Véase también:

Sintaxis

toInt64(expr)

Argumentos

  • expr — Expresión que devuelve un número o su representación en cadena. Admitido: valores o representaciones en cadena del tipo (U)Int*, valores del tipo Float*. No admitido: representaciones en cadena de valores Float*, incluidos NaN e Inf, y representaciones en cadena de valores binarios y hexadecimales. Expresión

Valor devuelto

Devuelve un valor entero de 64 bits. Int64

Ejemplos

Ejemplo de uso

SELECT
    toInt64(-64),
    toInt64(-64.64),
    toInt64('-64')
FORMAT Vertical
Row 1:
──────
toInt64(-64):    -64
toInt64(-64.64): -64
toInt64('-64'):  -64

toInt64OrDefault

Introducido en: v21.11.0

Al igual que toInt64, esta función convierte un valor de entrada a un valor de tipo Int64, pero devuelve el valor predeterminado en caso de error. Si no se pasa ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toInt64OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si no se puede analizar. Int64

Valor devuelto

Devuelve un valor de tipo Int64 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado, si se proporciona, o 0 en caso contrario. Int64

Ejemplos

Conversión correcta

SELECT toInt64OrDefault('-64', CAST('-1', 'Int64'))
-64

Conversión fallida

SELECT toInt64OrDefault('abc', CAST('-1', 'Int64'))
-1

toInt64OrNull

Introducido en: v1.1.0

Al igual que toInt64, esta función convierte un valor de entrada en un valor de tipo Int64, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales, por ejemplo, SELECT toInt64OrNull('0xc0fe');.

Véase también:

Sintaxis

toInt64OrNull(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int64; en caso contrario, NULL si la conversión no se realiza correctamente. Int64 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toInt64OrNull('-64'),
    toInt64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt64OrNull('-64'): -64
toInt64OrNull('abc'): ᴺᵁᴸᴸ

toInt64OrZero

Introducido en: v1.1.0

Convierte un valor de entrada al tipo Int64, pero devuelve 0 si se produce un error. Igual que toInt64, pero devuelve 0 en lugar de lanzar una excepción.

Véase también:

Sintaxis

toInt64OrZero(x)

Argumentos

Valor devuelto

Devuelve el valor de entrada convertido; en caso contrario, 0 si la conversión falla. Int64

Ejemplos

Ejemplo de uso

SELECT toInt64OrZero('123')
123

Si la conversión falla, devuelve cero

SELECT toInt64OrZero('abc')
0

toInt8

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo Int8. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt8('0xc0fe');.

Véase también:

Sintaxis

toInt8(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expresión

Valor devuelto

Devuelve un valor entero de 8 bits. Int8

Ejemplos

Ejemplo de uso

SELECT
    toInt8(-8),
    toInt8(-8.8),
    toInt8('-8')
FORMAT Vertical
Row 1:
──────
toInt8(-8):   -8
toInt8(-8.8): -8
toInt8('-8'): -8

toInt8OrDefault

Introducido en: v21.11.0

Al igual que toInt8, esta función convierte un valor de entrada en un valor de tipo Int8, pero devuelve el valor predeterminado si se produce un error. Si no se proporciona ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toInt8OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si no se puede analizar. Int8

Valor devuelto

Devuelve un valor de tipo Int8 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporcionó, o 0 si no. Int8

Ejemplos

Conversión correcta

SELECT toInt8OrDefault('-8', CAST('-1', 'Int8'))
-8

Error de conversión

SELECT toInt8OrDefault('abc', CAST('-1', 'Int8'))
-1

toInt8OrNull

Introducido en: v1.1.0

Al igual que toInt8, esta función convierte un valor de entrada en un valor de tipo Int8, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt8OrNull('0xc0fe');.

Véase también:

Sintaxis

toInt8OrNull(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int8 o NULL si la conversión no se realiza correctamente. Int8 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toInt8OrNull('-8'),
    toInt8OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt8OrNull('-8'):  -8
toInt8OrNull('abc'): ᴺᵁᴸᴸ

toInt8OrZero

Introducido en: v1.1.0

Al igual que toInt8, esta función convierte un valor de entrada en un valor de tipo Int8, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toInt8OrZero('0xc0fe');.

Véase también:

Sintaxis

toInt8OrZero(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo Int8; de lo contrario, 0 si la conversión no se realiza correctamente. Int8

Ejemplos

Ejemplo de uso

SELECT
    toInt8OrZero('8'),
    toInt8OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt8OrZero('8'):   8
toInt8OrZero('abc'): 0

toInterval

Introducido en: v25.4.0

Crea un valor de Interval a partir de un valor numérico y de una cadena que indica la unidad.

Esta función proporciona una forma unificada de crear intervalos de distintos tipos (segundos, minutos, horas, días, semanas, meses, trimestres, años) desde una sola función, especificando la unidad como un argumento de cadena. La cadena de la unidad no distingue entre mayúsculas y minúsculas.

Esto equivale a llamar a funciones específicas de tipo como toIntervalSecond, toIntervalMinute, toIntervalDay, etc., pero permite especificar la unidad de forma dinámica como un parámetro de cadena.

Sintaxis

toInterval(value, unit)

Argumentos

  • value — El valor numérico que representa el número de unidades. Puede ser cualquier tipo numérico. Int8 o Int16 o Int32 o Int64 o UInt8 o UInt16 o UInt32 o UInt64 o Float32 o Float64
  • unit — La unidad de tiempo. Debe ser una cadena constante. Valores válidos: 'nanosecond', 'microsecond', 'millisecond', 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'. String

Valor devuelto

Devuelve un valor Interval del tipo especificado. El tipo de resultado depende de la unidad: IntervalNanosecond, IntervalMicrosecond, IntervalMillisecond, IntervalSecond, IntervalMinute, IntervalHour, IntervalDay, IntervalWeek, IntervalMonth, IntervalQuarter o IntervalYear. Interval

Ejemplos

Crear intervalos con distintas unidades

SELECT
    toInterval(5, 'second') AS seconds,
    toInterval(3, 'day') AS days,
    toInterval(2, 'month') AS months
┌─seconds─┬─days─┬─months─┐
│       5 │    3 │      2 │
└─────────┴──────┴────────┘

Usar intervalos en la aritmética de fechas

SELECT
    now() AS current_time,
    now() + toInterval(1, 'hour') AS one_hour_later,
    now() - toInterval(7, 'day') AS week_ago
┌─────────current_time─┬──one_hour_later─────┬────────────week_ago─┐
│ 2025-01-04 10:30:00  │ 2025-01-04 11:30:00 │ 2024-12-28 10:30:00 │
└──────────────────────┴─────────────────────┴─────────────────────┘

Creación dinámica de intervalos

SELECT toDate('2025-01-01') + toInterval(number, 'day') AS dates
FROM numbers(5)
┌──────dates─┐
│ 2025-01-01 │
│ 2025-01-02 │
│ 2025-01-03 │
│ 2025-01-04 │
│ 2025-01-05 │
└────────────┘

toIntervalDay

Introducido en: v1.1.0

Devuelve un intervalo de n días del tipo de datos IntervalDay.

Sintaxis

toIntervalDay(n)

Argumentos

  • n — Número de días. Números enteros o su representación en cadena, y números de coma flotante. (U)Int* o Float* o String

Valor devuelto

Devuelve un intervalo de n días. Interval

Ejemplos

Ejemplo de uso

WITH
    toDate('2025-06-15') AS date,
    toIntervalDay(5) AS interval_to_days
SELECT date + interval_to_days AS result
┌─────result─┐
│ 2025-06-20 │
└────────────┘

toIntervalHour

Introducido en: v1.1.0

Devuelve un intervalo de n horas del tipo de dato IntervalHour.

Sintaxis

toIntervalHour(n)

Argumentos

  • n — Número de horas. Números enteros o sus representaciones en cadena, y números de coma flotante. Int* o UInt* o Float* o String

Valor devuelto

Devuelve un intervalo de n horas. Interval

Ejemplos

Ejemplo de uso

WITH
    toDate('2025-06-15') AS date,
    toIntervalHour(12) AS interval_to_hours
SELECT date + interval_to_hours AS result
┌──────────────result─┐
│ 2025-06-15 12:00:00 │
└─────────────────────┘

toIntervalMicrosecond

Introducido en: v22.6.0

Devuelve un intervalo de n microsegundos del tipo de dato IntervalMicrosecond.

Sintaxis

toIntervalMicrosecond(n)

Argumentos

Valor devuelto

Devuelve un intervalo de n microsegundos. Interval

Ejemplos

Ejemplo de uso

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalMicrosecond(30) AS interval_to_microseconds
SELECT date + interval_to_microseconds AS result
┌─────────────────────result─┐
│ 2025-06-15 00:00:00.000030 │
└────────────────────────────┘

toIntervalMillisecond

Introducido en: v22.6.0

Devuelve un intervalo de n milisegundos del tipo de datos IntervalMillisecond.

Sintaxis

toIntervalMillisecond(n)

Argumentos

Valor devuelto

Devuelve un intervalo de n milisegundos. Interval

Ejemplos

Ejemplo de uso

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalMillisecond(30) AS interval_to_milliseconds
SELECT date + interval_to_milliseconds AS result
┌──────────────────result─┐
│ 2025-06-15 00:00:00.030 │
└─────────────────────────┘

toIntervalMinute

Introducido en: v1.1.0

Devuelve un intervalo de n minutos del tipo de datos IntervalMinute.

Sintaxis

toIntervalMinute(n)

Argumentos

  • n — Número de minutos. Números enteros o sus representaciones en cadena, y números de punto flotante. (U)Int* o Float* o String

Valor devuelto

Devuelve un intervalo de n minutos. Interval

Ejemplos

Ejemplo de uso

WITH
    toDate('2025-06-15') AS date,
    toIntervalMinute(12) AS interval_to_minutes
SELECT date + interval_to_minutes AS result
┌──────────────result─┐
│ 2025-06-15 00:12:00 │
└─────────────────────┘

toIntervalMonth

Introducido en: v1.1.0

Devuelve un intervalo de n meses del tipo de datos IntervalMonth.

Sintaxis

toIntervalMonth(n)

Argumentos

Valor devuelto

Devuelve un intervalo de n meses. Interval

Ejemplos

Ejemplo de uso

WITH
    toDate('2025-06-15') AS date,
    toIntervalMonth(1) AS interval_to_month
SELECT date + interval_to_month AS result
┌─────result─┐
│ 2025-07-15 │
└────────────┘

toIntervalNanosecond

Introducido en: v22.6.0

Devuelve un intervalo de n nanosegundos del tipo de dato IntervalNanosecond.

Sintaxis

toIntervalNanosecond(n)

Argumentos

Valor devuelto

Devuelve un intervalo de n nanosegundos. Interval

Ejemplos

Ejemplo de uso

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalNanosecond(30) AS interval_to_nanoseconds
SELECT date + interval_to_nanoseconds AS result
┌────────────────────────result─┐
│ 2025-06-15 00:00:00.000000030 │
└───────────────────────────────┘

toIntervalQuarter

Introducido en: v1.1.0

Devuelve un intervalo de n trimestres del tipo de dato IntervalQuarter.

Sintaxis

toIntervalQuarter(n)

Argumentos

Valor devuelto

Devuelve un intervalo de n trimestres. Interval

Ejemplos

Ejemplo de uso

WITH
    toDate('2025-06-15') AS date,
    toIntervalQuarter(1) AS interval_to_quarter
SELECT date + interval_to_quarter AS result
┌─────result─┐
│ 2025-09-15 │
└────────────┘

toIntervalSecond

Introducido en: v1.1.0

Devuelve un intervalo de n segundos del tipo de datos IntervalSecond.

Sintaxis

toIntervalSecond(n)

Argumentos

  • n — Número de segundos. Números enteros o sus representaciones como cadenas, y números de coma flotante. (U)Int* o Float* o String

Valor devuelto

Devuelve un intervalo de n segundos. Interval

Ejemplos

Ejemplo de uso

WITH
    toDate('2025-06-15') AS date,
    toIntervalSecond(30) AS interval_to_seconds
SELECT date + interval_to_seconds AS result
┌──────────────result─┐
│ 2025-06-15 00:00:30 │
└─────────────────────┘

toIntervalWeek

Introducido en: v1.1.0

Devuelve un intervalo de n semanas del tipo de datos IntervalWeek.

Sintaxis

toIntervalWeek(n)

Argumentos

Valor devuelto

Devuelve un intervalo de n semanas. Interval

Ejemplos

Ejemplo de uso

WITH
    toDate('2025-06-15') AS date,
    toIntervalWeek(1) AS interval_to_week
SELECT date + interval_to_week AS result
┌─────result─┐
│ 2025-06-22 │
└────────────┘

toIntervalYear

Introducido en: v1.1.0

Devuelve un intervalo de n años del tipo de dato IntervalYear.

Sintaxis

toIntervalYear(n)

Argumentos

Valor devuelto

Devuelve un intervalo de n años. Interval

Ejemplos

Ejemplo de uso

WITH
    toDate('2024-06-15') AS date,
    toIntervalYear(1) AS interval_to_year
SELECT date + interval_to_year AS result
┌─────result─┐
│ 2025-06-15 │
└────────────┘

toLowCardinality

Introducido en: v18.12.0

Convierte el argumento de entrada en la versión LowCardinality del mismo tipo de dato.

Sintaxis

toLowCardinality(expr)

Argumentos

Valor devuelto

Devuelve el valor de entrada convertido al tipo de dato LowCardinality. LowCardinality

Ejemplos

Ejemplo de uso

SELECT toLowCardinality('1')
┌─toLowCardinality('1')─┐
│ 1                     │
└───────────────────────┘

toString

Introducido en: v1.1.0

Convierte valores a su representación como cadena. Para argumentos DateTime, la función puede tomar un segundo argumento String que contenga el nombre de la zona horaria.

Sintaxis

toString(value[, timezone])

Argumentos

  • value — Valor que se convertirá en cadena. Any
  • timezone — Opcional. Nombre de la zona horaria para convertir DateTime. String

Valor devuelto

Devuelve una representación en cadena del valor de entrada. String

Ejemplos

Ejemplo de uso

SELECT
    now() AS ts,
    time_zone,
    toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10
┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam  │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra    │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan  │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens     │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast    │ 2023-09-08 20:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘

toStringCutToZero

Introducida en: v1.1.0

Acepta un argumento de tipo String o FixedString y devuelve un String que contiene una copia de la cadena original truncada en el primer byte nulo.

Los bytes nulos (\0) se consideran terminadores de cadena. Esta función resulta útil para procesar cadenas de estilo C o datos binarios en los que los bytes nulos marcan el final del contenido significativo.

Sintaxis

toStringCutToZero(s)

Argumentos

Valor devuelto

Devuelve un String que contiene los caracteres anteriores al primer byte nulo. String

Ejemplos

Ejemplo de uso

SELECT
    toStringCutToZero('hello'),
    toStringCutToZero('hello\0world')
┌─toStringCutToZero('hello')─┬─toStringCutToZero('hello\0world')─┐
│ hello                      │ hello                             │
└────────────────────────────┴───────────────────────────────────┘

toTime

Introducido en: v25.5.0

Convierte un valor de entrada al tipo Time. Admite la conversión desde String, FixedString, DateTime, DateTime64 o tipos numéricos que representan segundos desde la medianoche. Los valores numéricos fuera del rango del tipo (de -999:59:59 a 999:59:59, es decir, de -3599999 a 3599999 segundos) se saturan a los límites del rango, y los valores de coma flotante no finitos (NaN, inf, -inf) no se pueden convertir y generan una excepción.

Sintaxis

toTime(x)

Argumentos

Valor devuelto

Devuelve el valor convertido. Time

Ejemplos

Conversión de DateTime64 a Time

SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime64('2025-04-15 14:30:25.123', 3))
14:30:25

Conversión de DateTime a Time

SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime('2025-04-15 14:30:25'))
14:30:25

Conversión de entero (segundos desde epoch) a Time

SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime(52225, 'UTC'))
14:30:25

toTime64

Introducido en: v25.6.0

Convierte un valor de entrada al tipo Time64. Admite la conversión desde String, FixedString, DateTime64 o tipos numéricos que representan los segundos transcurridos desde la medianoche. Proporciona precisión de subsegundos para valores de tiempo, con hasta scale dígitos fraccionarios.

Sintaxis

toTime64(x, scale)

Argumentos

Valor devuelto

Devuelve el valor convertido con el valor de scale solicitado. Time64

Ejemplos

Conversión de String a Time64

SET enable_time_time64_type = 1;
SELECT toTime64('14:30:25.123456', 6)
14:30:25.123456

Conversión de DateTime64 a Time64

SET enable_time_time64_type = 1;
SELECT toTime64(toDateTime64('2025-04-15 14:30:25.123456', 6), 6)
14:30:25.123456

Conversión de Float (segundos transcurridos desde la medianoche) a Time64

SET enable_time_time64_type = 1;
SELECT toTime64(52225.123456, 6)
14:30:25.123456

toTime64OrNull

Introducido en: v25.6.0

Convierte un valor de entrada en un valor de tipo Time64, pero devuelve NULL en caso de error. Es como toTime64, pero devuelve NULL en lugar de lanzar una excepción cuando se producen errores de conversión.

Véase también:

Sintaxis

toTime64OrNull(x)

Argumentos

  • x — Una representación textual de una hora con precisión de subsegundos. String

Valor devuelto

Devuelve un valor Time64 si la conversión se realiza correctamente; de lo contrario, NULL. Time64 o NULL

Ejemplos

Ejemplo de uso

SELECT toTime64OrNull('12:30:45.123'), toTime64OrNull('invalid')
┌─toTime64OrNull('12:30:45.123')─┬─toTime64OrNull('invalid')─┐
│                   12:30:45.123 │                      ᴺᵁᴸᴸ │
└────────────────────────────────┴───────────────────────────┘

toTime64OrZero

Introducido en: v25.6.0

Convierte un valor de entrada a un valor de tipo Time64, pero devuelve 00:00:00.000 en caso de error. Al igual que toTime64, pero devuelve 00:00:00.000 en lugar de lanzar una excepción ante errores de conversión.

Sintaxis

toTime64OrZero(x)

Argumentos

  • x — Una representación textual de una hora con precisión de subsegundos. String

Valor devuelto

Devuelve un valor Time64 si la operación se realiza correctamente; de lo contrario, 00:00:00.000. Time64

Ejemplos

Ejemplo de uso

SELECT toTime64OrZero('12:30:45.123'), toTime64OrZero('invalid')
┌─toTime64OrZero('12:30:45.123')─┬─toTime64OrZero('invalid')─┐
│                   12:30:45.123 │              00:00:00.000 │
└────────────────────────────────┴───────────────────────────┘

toTimeOrNull

Introducido en: v25.5.0

Convierte un valor de entrada en un valor de tipo Time, pero devuelve NULL en caso de error. Al igual que toTime, pero devuelve NULL en lugar de lanzar una excepción si se producen errores de conversión.

Véase también:

Sintaxis

toTimeOrNull(x)

Argumentos

  • x — Una representación textual de una hora. String

Valor devuelto

Devuelve un valor Time si la operación se realiza correctamente; de lo contrario, NULL. Time o NULL

Ejemplos

Ejemplo de uso

SELECT toTimeOrNull('12:30:45'), toTimeOrNull('invalid')
┌─toTimeOrNull('12:30:45')─┬─toTimeOrNull('invalid')─┐
│                 12:30:45 │                    ᴺᵁᴸᴸ │
└──────────────────────────┴─────────────────────────┘

toTimeOrZero

Introducido en: v25.5.0

Convierte un valor de entrada en un valor de tipo Time, pero devuelve 00:00:00 en caso de error. Al igual que toTime, devuelve 00:00:00 en lugar de lanzar una excepción si se producen errores de conversión.

Sintaxis

toTimeOrZero(x)

Argumentos

  • x — Una representación textual de una hora. String

Valor devuelto

Devuelve un valor Time si la operación se realiza correctamente; de lo contrario, 00:00:00. Time

Ejemplos

Ejemplo de uso

SELECT toTimeOrZero('12:30:45'), toTimeOrZero('invalid')
┌─toTimeOrZero('12:30:45')─┬─toTimeOrZero('invalid')─┐
│                 12:30:45 │                00:00:00 │
└──────────────────────────┴─────────────────────────┘

toUInt128

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo UInt128. Lanza una excepción en caso de error. La función usa redondeo hacia cero, lo que significa que trunca los dígitos fraccionarios de los números.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt128('0xc0fe');.

Véase también:

Sintaxis

toUInt128(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena. Expression

Valor devuelto

Devuelve un entero sin signo de 128 bits. UInt128

Ejemplos

Ejemplo de uso

SELECT
    toUInt128(128),
    toUInt128(128.8),
    toUInt128('128')
FORMAT Vertical
Row 1:
──────
toUInt128(128):   128
toUInt128(128.8): 128
toUInt128('128'): 128

toUInt128OrDefault

Introducido en: v21.11.0

Al igual que toUInt128, esta función convierte un valor de entrada en un valor de tipo UInt128, pero devuelve el valor predeterminado en caso de error. Si no se proporciona ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toUInt128OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se realiza correctamente. UInt128

Valor devuelto

Devuelve un valor de tipo UInt128 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado, si se proporcionó, o 0 si no. UInt128

Ejemplos

Conversión correcta

SELECT toUInt128OrDefault('128', CAST('0', 'UInt128'))
128

Conversión fallida

SELECT toUInt128OrDefault('abc', CAST('0', 'UInt128'))
0

toUInt128OrNull

Introducido en: v21.6.0

Al igual que toUInt128, esta función convierte un valor de entrada en un valor del tipo UInt128, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt128OrNull('0xc0fe');.

Véase también:

Sintaxis

toUInt128OrNull(x)

Argumentos

  • x — Una representación en cadena. String

Valor devuelto

Devuelve un valor de tipo UInt128 o NULL si la conversión no se realiza correctamente. UInt128 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toUInt128OrNull('128'),
    toUInt128OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt128OrNull('128'): 128
toUInt128OrNull('abc'): ᴺᵁᴸᴸ

toUInt128OrZero

Introducido en: v1.1.0

Al igual que toUInt128, esta función convierte un valor de entrada en un valor de tipo UInt128, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt128OrZero('0xc0fe');.

Véase también:

Sintaxis

toUInt128OrZero(x)

Argumentos

  • x — La representación en cadena. String

Valor devuelto

Devuelve un valor de tipo UInt128; en caso contrario, 0 si la conversión falla. UInt128

Ejemplos

Ejemplo de uso

SELECT
    toUInt128OrZero('128'),
    toUInt128OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt128OrZero('128'): 128
toUInt128OrZero('abc'): 0

toUInt16

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo UInt16. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena de tipo (U)Int*.
  • Valores de tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt16('0xc0fe');.

Véase también:

Sintaxis

toUInt16(expr)

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena. Expression

Valor devuelto

Devuelve un valor entero sin signo de 16 bits. UInt16

Ejemplos

Ejemplo de uso

SELECT
    toUInt16(16),
    toUInt16(16.16),
    toUInt16('16')
FORMAT Vertical
Row 1:
──────
toUInt16(16):    16
toUInt16(16.16): 16
toUInt16('16'):  16

toUInt16OrDefault

Introducido en: v21.11.0

Al igual que toUInt16, esta función convierte un valor de entrada en un valor de tipo UInt16, pero devuelve el valor por defecto en caso de error. Si no se proporciona ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toUInt16OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o su representación en cadena. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se realiza correctamente. UInt16

Valor devuelto

Devuelve un valor de tipo UInt16 si la conversión se realiza correctamente; en caso contrario, devuelve el valor predeterminado, si se proporcionó, o 0 si no. UInt16

Ejemplos

Conversión correcta

SELECT toUInt16OrDefault('16', CAST('0', 'UInt16'))
16

Conversión fallida

SELECT toUInt16OrDefault('abc', CAST('0', 'UInt16'))
0

toUInt16OrNull

Introducido en: v1.1.0

Al igual que toUInt16, esta función convierte un valor de entrada en un valor de tipo UInt16, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int8/16/32/128/256.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt16OrNull('0xc0fe');.

Véase también:

Sintaxis

toUInt16OrNull(x)

Argumentos

  • x — Una representación en cadena. String

Valor devuelto

Devuelve un valor de tipo UInt16; en caso contrario, NULL si la conversión no se realiza correctamente. UInt16 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toUInt16OrNull('16'),
    toUInt16OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt16OrNull('16'):  16
toUInt16OrNull('abc'): ᴺᵁᴸᴸ

toUInt16OrZero

Introducido en: v1.1.0

Al igual que toUInt16, esta función convierte un valor de entrada en un valor de tipo UInt16, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int8/16/32/128/256.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt16OrZero('0xc0fe');.

Véase también:

Sintaxis

toUInt16OrZero(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt16; en caso contrario, 0 si la conversión no se realiza correctamente. UInt16

Ejemplos

Ejemplo de uso

SELECT
    toUInt16OrZero('16'),
    toUInt16OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt16OrZero('16'):  16
toUInt16OrZero('abc'): 0

toUInt256

Introducido en: v1.1.0

Convierte un valor de entrada a un valor de tipo UInt256. Lanza una excepción en caso de error. La función utiliza redondeo hacia cero, lo que significa que trunca los dígitos fraccionarios de los números.

Argumentos admitidos:

  • Valores o representaciones en cadena de tipo (U)Int*.
  • Valores de tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores de tipo Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt256('0xc0fe');.

Véase también:

Sintaxis

toUInt256(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expresión

Valor devuelto

Devuelve un valor entero sin signo de 256 bits. UInt256

Ejemplos

Ejemplo de uso

SELECT
    toUInt256(256),
    toUInt256(256.256),
    toUInt256('256')
FORMAT Vertical
Row 1:
──────
toUInt256(256):     256
toUInt256(256.256): 256
toUInt256('256'):   256

toUInt256OrDefault

Introducido en: v21.11.0

Al igual que toUInt256, esta función convierte un valor de entrada en un valor del tipo UInt256, pero devuelve el valor predeterminado en caso de error. Si no se pasa ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toUInt256OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se realiza correctamente. UInt256

Valor devuelto

Devuelve un valor de tipo UInt256 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporciona, o 0 en caso contrario. UInt256

Ejemplos

Conversión correcta

SELECT toUInt256OrDefault('-256', CAST('0', 'UInt256'))
0

Error de conversión

SELECT toUInt256OrDefault('abc', CAST('0', 'UInt256'))
0

toUInt256OrNull

Introducido en: v20.8.0

Al igual que toUInt256, esta función convierte un valor de entrada en un valor de tipo UInt256, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt256OrNull('0xc0fe');.

Véase también:

Sintaxis

toUInt256OrNull(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt256 o NULL si la conversión no se realiza correctamente. UInt256 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toUInt256OrNull('256'),
    toUInt256OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt256OrNull('256'): 256
toUInt256OrNull('abc'): ᴺᵁᴸᴸ

toUInt256OrZero

Introducido en: v20.8.0

Al igual que toUInt256, esta función convierte un valor de entrada en un valor del tipo UInt256, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales, por ejemplo, SELECT toUInt256OrZero('0xc0fe');.

Véase también:

Sintaxis

toUInt256OrZero(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt256; de lo contrario, 0 si la conversión no se realiza correctamente. UInt256

Ejemplos

Ejemplo de uso

SELECT
    toUInt256OrZero('256'),
    toUInt256OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt256OrZero('256'): 256
toUInt256OrZero('abc'): 0

toUInt32

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo UInt32. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt32('0xc0fe');.

Véase también:

Sintaxis

toUInt32(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expresión

Valor devuelto

Devuelve un valor entero sin signo de 32 bits. UInt32

Ejemplos

Ejemplo de uso

SELECT
    toUInt32(32),
    toUInt32(32.32),
    toUInt32('32')
FORMAT Vertical
Row 1:
──────
toUInt32(32):    32
toUInt32(32.32): 32
toUInt32('32'):  32

toUInt32OrDefault

Introducido en: v21.11.0

Al igual que toUInt32, esta función convierte un valor de entrada en un valor del tipo UInt32, pero devuelve el valor predeterminado en caso de error. Si no se pasa ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toUInt32OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de caracteres de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis falla. UInt32

Valor devuelto

Devuelve un valor de tipo UInt32 si la conversión se realiza con éxito; de lo contrario, devuelve el valor predeterminado si se proporciona, o 0 en caso contrario. UInt32

Ejemplos

Conversión exitosa

SELECT toUInt32OrDefault('32', CAST('0', 'UInt32'))
32

Conversión fallida

SELECT toUInt32OrDefault('abc', CAST('0', 'UInt32'))
0

toUInt32OrNull

Introducido en: v1.1.0

Al igual que toUInt32, esta función convierte un valor de entrada en un valor de tipo UInt32, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int8/16/32/128/256.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt32OrNull('0xc0fe');.

Véase también:

Sintaxis

toUInt32OrNull(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt32 o NULL si la conversión no se realiza correctamente. UInt32 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toUInt32OrNull('32'),
    toUInt32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt32OrNull('32'):  32
toUInt32OrNull('abc'): ᴺᵁᴸᴸ

toUInt32OrZero

Introducido en: v1.1.0

Al igual que toUInt32, esta función convierte un valor de entrada en un valor del tipo UInt32, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int8/16/32/128/256.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt32OrZero('0xc0fe');.

Véase también:

Sintaxis

toUInt32OrZero(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt32 o 0 si la conversión no se realiza correctamente. UInt32

Ejemplos

Ejemplo de uso

SELECT
    toUInt32OrZero('32'),
    toUInt32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt32OrZero('32'):  32
toUInt32OrZero('abc'): 0

toUInt64

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo UInt64. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Tipos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt64('0xc0fe');.

Véase también:

Sintaxis

toUInt64(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expresión

Valor devuelto

Devuelve un valor entero sin signo de 64 bits. UInt64

Ejemplos

Ejemplo de uso

SELECT
    toUInt64(64),
    toUInt64(64.64),
    toUInt64('64')
FORMAT Vertical
Row 1:
──────
toUInt64(64):    64
toUInt64(64.64): 64
toUInt64('64'):  64

toUInt64OrDefault

Introducido en: v21.11.0

Al igual que toUInt64, esta función convierte un valor de entrada en un valor del tipo UInt64, pero devuelve el valor predeterminado en caso de error. Si no se pasa ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toUInt64OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o una representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devolverá si el análisis sintáctico no se completa correctamente. UInt64

Valor devuelto

Devuelve un valor de tipo UInt64 si la conversión se realiza correctamente; en caso contrario, devuelve el valor predeterminado si se proporciona, o 0 si no. UInt64

Ejemplos

Conversión correcta

SELECT toUInt64OrDefault('64', CAST('0', 'UInt64'))
64

Error de conversión

SELECT toUInt64OrDefault('abc', CAST('0', 'UInt64'))
0

toUInt64OrNull

Introducido en: v1.1.0

Al igual que toUInt64, esta función convierte un valor de entrada en un valor de tipo UInt64, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt64OrNull('0xc0fe');.

Véase también:

Sintaxis

toUInt64OrNull(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt64 o NULL si la conversión no se realiza correctamente. UInt64 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toUInt64OrNull('64'),
    toUInt64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt64OrNull('64'):  64
toUInt64OrNull('abc'): ᴺᵁᴸᴸ

toUInt64OrZero

Introducido en: v1.1.0

Al igual que toUInt64, esta función convierte un valor de entrada en un valor de tipo UInt64, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int*.

Argumentos no admitidos (devuelven 0):

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt64OrZero('0xc0fe');.

Véase también:

Sintaxis

toUInt64OrZero(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt64 o, si la conversión falla, 0. UInt64

Ejemplos

Ejemplo de uso

SELECT
    toUInt64OrZero('64'),
    toUInt64OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt64OrZero('64'):  64
toUInt64OrZero('abc'): 0

toUInt8

Introducido en: v1.1.0

Convierte un valor de entrada en un valor de tipo UInt8. Lanza una excepción en caso de error.

Argumentos admitidos:

  • Valores o representaciones en cadena del tipo (U)Int*.
  • Valores del tipo Float*.

Argumentos no admitidos:

  • Representaciones en cadena de valores Float*, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt8('0xc0fe');.

Véase también:

Sintaxis

toUInt8(expr)

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. Expresión

Valor devuelto

Devuelve un valor entero sin signo de 8 bits. UInt8

Ejemplos

Ejemplo de uso

SELECT
    toUInt8(8),
    toUInt8(8.8),
    toUInt8('8')
FORMAT Vertical
Row 1:
──────
toUInt8(8):   8
toUInt8(8.8): 8
toUInt8('8'): 8

toUInt8OrDefault

Introducido en: v21.11.0

Al igual que toUInt8, esta función convierte un valor de entrada en un valor del tipo UInt8, pero devuelve el valor predeterminado en caso de que se produzca un error. Si no se proporciona ningún valor default, se devuelve 0 en caso de error.

Sintaxis

toUInt8OrDefault(expr[, default])

Argumentos

  • expr — Expresión que devuelve un número o la representación en cadena de un número. String o (U)Int* o Float*
  • default — Opcional. El valor predeterminado que se devuelve si el análisis no se realiza correctamente. UInt8

Valor devuelto

Devuelve un valor de tipo UInt8 si la conversión se realiza correctamente; de lo contrario, devuelve el valor predeterminado si se proporciona, o 0 si no. UInt8

Ejemplos

Conversión exitosa

SELECT toUInt8OrDefault('8', CAST('0', 'UInt8'))
8

Error de conversión

SELECT toUInt8OrDefault('abc', CAST('0', 'UInt8'))
0

toUInt8OrNull

Introducido en: v1.1.0

Al igual que toUInt8, esta función convierte un valor de entrada a un valor del tipo UInt8, pero devuelve NULL en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int8/16/32/128/256.

Argumentos no admitidos (devuelven NULL):

  • Representaciones en cadena de valores Float* normales, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt8OrNull('0xc0fe');.

Véase también:

Sintaxis

toUInt8OrNull(x)

Argumentos

  • x — Una representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt8, o NULL si la conversión no se realiza correctamente. UInt8 o NULL

Ejemplos

Ejemplo de uso

SELECT
    toUInt8OrNull('42'),
    toUInt8OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt8OrNull('42'):  42
toUInt8OrNull('abc'): ᴺᵁᴸᴸ

toUInt8OrZero

Introducido en: v1.1.0

Al igual que toUInt8, esta función convierte un valor de entrada en un valor de tipo UInt8, pero devuelve 0 en caso de error.

Argumentos admitidos:

  • Representaciones en cadena de (U)Int8/16/32/128/256.

Argumentos no admitidos (devuelve 0):

  • Representaciones en cadena de valores Float* normales, incluidos NaN e Inf.
  • Representaciones en cadena de valores binarios y hexadecimales; por ejemplo, SELECT toUInt8OrZero('0xc0fe');.

Véase también:

Sintaxis

toUInt8OrZero(x)

Argumentos

  • x — La representación en cadena de un número. String

Valor devuelto

Devuelve un valor de tipo UInt8; en caso contrario, 0 si la conversión no se realiza correctamente. UInt8

Ejemplos

Ejemplo de uso

SELECT
    toUInt8OrZero('-8'),
    toUInt8OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt8OrZero('-8'):  0
toUInt8OrZero('abc'): 0

toUUID

Introducido en: v1.1.0

Convierte un valor de tipo String en un valor UUID.

Sintaxis

toUUID(string)

Argumentos

Valor devuelto

Devuelve un UUID a partir de la representación en cadena del UUID. UUID

Ejemplos

Ejemplo de uso

SELECT toUUID('61f0c404-5cb3-11e7-907b-a6006ad3dba0') AS uuid
┌─uuid─────────────────────────────────┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0 │
└──────────────────────────────────────┘

toUUIDOrZero

Introducido en: v20.12.0

Convierte un valor de entrada en un valor de tipo UUID, pero devuelve un UUID con ceros en caso de error. Al igual que toUUID, pero devuelve un UUID con ceros (00000000-0000-0000-0000-000000000000) en lugar de generar una excepción cuando se producen errores de conversión.

Argumentos admitidos:

  • Representaciones de UUID en cadena en formato estándar (8-4-4-4-12 dígitos hexadecimales).
  • Representaciones de UUID en cadena sin guiones (32 dígitos hexadecimales).

Argumentos no admitidos (devuelven un UUID con ceros):

  • Formatos de cadena no válidos.
  • Tipos que no son cadenas.

Sintaxis

toUUIDOrZero(x)

Argumentos

  • x — Una representación textual de un UUID. String

Valor devuelto

Devuelve un valor UUID si la operación se realiza correctamente; en caso contrario, un UUID con valor cero (00000000-0000-0000-0000-000000000000). UUID

Ejemplos

Ejemplo de uso

SELECT
    toUUIDOrZero('550e8400-e29b-41d4-a716-446655440000') AS valid_uuid,
    toUUIDOrZero('invalid-uuid') AS invalid_uuid
┌─valid_uuid───────────────────────────┬─invalid_uuid─────────────────────────┐
│ 550e8400-e29b-41d4-a716-446655440000 │ 00000000-0000-0000-0000-000000000000 │
└──────────────────────────────────────┴──────────────────────────────────────┘

toUnixTimestamp64Micro

Introducido en: v20.5.0

Convierte un DateTime64 en un valor Int64 con precisión fija de microsegundos. El valor de entrada se ajusta al alza o a la baja según corresponda, en función de su precisión.

Sintaxis

toUnixTimestamp64Micro(value)

Argumentos

  • value — Valor de DateTime64 con cualquier precisión. DateTime64

Valor devuelto

Devuelve una marca de tiempo Unix en microsegundos. Int64

Ejemplos

Ejemplo de uso

WITH toDateTime64('2025-02-13 23:31:31.011123', 6, 'UTC') AS dt64
SELECT toUnixTimestamp64Micro(dt64);
┌─toUnixTimestamp64Micro(dt64)─┐
│             1739489491011123 │
└──────────────────────────────┘

toUnixTimestamp64Milli

Introducido en: v20.5.0

Convierte un DateTime64 en un valor Int64 con precisión fija de milisegundos. El valor de entrada se escala hacia arriba o hacia abajo según corresponda, en función de su precisión.

Sintaxis

toUnixTimestamp64Milli(value)

Argumentos

  • value — Valor de DateTime64 con cualquier precisión. DateTime64

Valor devuelto

Devuelve una marca de tiempo Unix en milisegundos. Int64

Ejemplos

Ejemplo de uso

WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Milli(dt64);
┌─toUnixTimestamp64Milli(dt64)─┐
│                1739489491011 │
└──────────────────────────────┘

toUnixTimestamp64Nano

Introducido en: v20.5.0

Convierte un DateTime64 en un valor Int64 con precisión fija de nanosegundos. El valor de entrada se escala hacia arriba o hacia abajo según corresponda, en función de su precisión.

Sintaxis

toUnixTimestamp64Nano(value)

Argumentos

  • value — Valor de DateTime64 con cualquier precisión. DateTime64

Valor devuelto

Devuelve una marca de tiempo Unix en nanosegundos. Int64

Ejemplos

Ejemplo de uso

WITH toDateTime64('2025-02-13 23:31:31.011123456', 9, 'UTC') AS dt64
SELECT toUnixTimestamp64Nano(dt64);
┌─toUnixTimestamp64Nano(dt64)─┐
│         1739489491011123456 │
└─────────────────────────────┘

toUnixTimestamp64Second

Introducido en: v24.12.0

Convierte un DateTime64 en un valor Int64 con precisión fija de segundos. El valor de entrada se ajusta hacia arriba o hacia abajo según corresponda, en función de su precisión.

Sintaxis

toUnixTimestamp64Second(value)

Argumentos

  • value — Valor de DateTime64 con cualquier precisión. DateTime64

Valor devuelto

Devuelve una marca de tiempo Unix en segundos. Int64

Ejemplos

Ejemplo de uso

WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Second(dt64);
┌─toUnixTimestamp64Second(dt64)─┐
│                    1739489491 │
└───────────────────────────────┘
Navigation