Todos los productos
Search
Centro de documentos

Lindorm:Funciones de tiempo

Última actualización: Sep 05, 2026

LindormTable es compatible con cuatro funciones de tiempo para dar formato a las marcas de tiempo, convertir entre marcas de tiempo UNIX y marcas de tiempo locales de la sesión, y calcular diferencias entre fechas. Estas funciones solo aplican a LindormTable. Todas se ejecutan en la zona horaria de la sesión actual.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • LindormTable 2.7.8 o posterior (para DATE_FORMAT, FROM_UNIXTIME y DATEDIFF)

  • Lindorm SQL 2.8.7.0 o posterior (para DATE_FORMAT, FROM_UNIXTIME y DATEDIFF)

  • LindormTable 2.8.0 o posterior y Lindorm SQL 2.9.0.0 o posterior (para UNIX_TIMESTAMP)

Para consultar o actualizar la versión secundaria del motor de LindormTable, consulte Release notes of LindormTable y Upgrade the minor engine version of a Lindorm instance. Para consultar la versión de Lindorm SQL, consulte SQL versions.

Funciones compatibles

Función

Descripción

DATE_FORMAT

Da formato a una marca de tiempo mediante la zona horaria de la sesión actual.

FROM_UNIXTIME

Convierte un valor de tipo numérico (BIGINT, INTEGER, SMALLINT o TINYINT) en una marca de tiempo mediante la zona horaria de la sesión actual. Es la operación inversa de UNIX_TIMESTAMP.

DATEDIFF

Devuelve la diferencia en días entre dos marcas de tiempo, con base únicamente en los valores de fecha.

UNIX_TIMESTAMP

Convierte una marca de tiempo o una cadena de marca de tiempo en una marca de tiempo UNIX. Devuelve un valor DOUBLE en segundos. Es la operación inversa de FROM_UNIXTIME.

DATE_FORMAT

Da formato a una marca de tiempo mediante la zona horaria de la sesión actual. Para consultar o establecer la zona horaria de la sesión, consulte Specify a time zone for a LindormTable connection.

Sintaxis

DATE_FORMAT(TIMESTAMP ts, STRING format)

Parámetros

Parámetro

Obligatorio

Descripción

ts

Sí

La marca de tiempo a la que se dará formato.

format

Sí

Una cadena de formato compuesta por especificadores de formato (por ejemplo, %Y-%m-%d). Los caracteres que no comienzan con % se devuelven tal cual. Para ver la lista completa de especificadores compatibles, consulte Format specifiers.

Ejemplo

Dé formato a la marca de tiempo 2024-01-01 17:20:35 como at 17:20:35 on Jan 1st, 2024:

SELECT DATE_FORMAT('2024-01-01 17:20:35', 'at %T on %b %D, %Y');

Salida:

+------------------------------+
| EXPR$0                       |
+------------------------------+
| at 17:20:35 on JAN 1st, 2024 |
+------------------------------+

FROM_UNIXTIME

Convierte un valor de tipo numérico en una marca de tiempo mediante la zona horaria de la sesión actual. Esta función es la operación inversa de UNIX_TIMESTAMP. Acepta valores BIGINT, INTEGER, SMALLINT y TINYINT. El valor de entrada representa los segundos transcurridos desde 1970-01-01 00:00:00 UTC, y conserva hasta tres decimales.

Solo el protocolo MySQL permite cambiar la zona horaria de una conexión. Consulte Use the MySQL protocol to develop applications (recommended) y Use a MySQL client to connect to and use LindormTable .

Sintaxis

-- Convert a UNIX timestamp to a session-local timestamp.
FROM_UNIXTIME(Number seconds)

-- Convert and format the result.
-- Equivalent to: DATE_FORMAT(FROM_UNIXTIME(seconds), format)
FROM_UNIXTIME(Number seconds, STRING format)

La forma con dos parámetros equivale a llamar a DATE_FORMAT sobre el resultado de la forma con un solo parámetro. El parámetro format acepta los mismos especificadores que DATE_FORMAT. Para más detalles, consulte Especificadores de formato.

Parámetros

Parámetro

Obligatorio

Descripción

seconds

Sí

Una marca de tiempo UNIX en segundos. Se conservan hasta tres decimales. El valor representa los segundos transcurridos desde 1970-01-01 00:00:00 UTC.

format

No

Una cadena de formato. Utiliza los mismos especificadores que DATE_FORMAT.

Ejemplos

Ejemplo 1: convertir una marca de tiempo UNIX

Convierta 10.1578 en una marca de tiempo mediante la zona horaria de la sesión actual:

SELECT FROM_UNIXTIME(10.1578);

Salida:

+-------------------------+
| EXPR$0                  |
+-------------------------+
| 1970-01-01 08:00:10.158 |
+-------------------------+

Cambie la zona horaria de la sesión a +03:00 y vuelva a ejecutar la conversión:

-- Change the session time zone.
SET @@time_zone='+03:00';

-- Convert using the new time zone.
SELECT FROM_UNIXTIME(10.1578);

Salida:

+-------------------------+
| EXPR$0                  |
+-------------------------+
| 1970-01-01 03:00:10.158 |
+-------------------------+

Ejemplo 2: convertir y dar formato

Convierta 10.1578 y dé formato al resultado mediante la zona horaria de la sesión actual:

SELECT FROM_UNIXTIME(10.1578, 'at %T on %b %D, %Y');

Salida:

+------------------------------+
| EXPR$0                       |
+------------------------------+
| at 08:00:10 on JAN 1st, 1970 |
+------------------------------+

Cambie la zona horaria de la sesión a +03:00 y vuelva a aplicar el formato:

-- Change the session time zone.
SET @@time_zone='+03:00';

-- Convert and format using the new time zone.
SELECT FROM_UNIXTIME(10.1578, 'at %T on %b %D, %Y');

Salida:

+------------------------------+
| EXPR$0                       |
+------------------------------+
| at 03:00:10 on JAN 1st, 1970 |
+------------------------------+

DATEDIFF

Devuelve la diferencia en días entre dos marcas de tiempo en la zona horaria de la sesión actual. El resultado equivale a ts1 - ts2 y compara únicamente los valores de fecha; las horas, los minutos y los segundos se ignoran.

  • Resultado positivo: ts1 corresponde a una fecha posterior a ts2.

  • Resultado negativo: ts1 corresponde a una fecha anterior a ts2.

  • Cero: ts1 y ts2 corresponden a la misma fecha.

Sintaxis

DATEDIFF(TIMESTAMP ts1, TIMESTAMP ts2)

Parámetros

Parámetro

Obligatorio

Descripción

ts1

Sí

La primera marca de tiempo.

ts2

Sí

La segunda marca de tiempo.

Ejemplos

Ejemplo 1: ts1 es anterior a ts2

SELECT DATEDIFF('2024-01-01 15:30:00', '2024-01-02 00:59:59');

Salida:

+--------+
| EXPR$0 |
+--------+
|     -1 |
+--------+

Ejemplo 2: ts1 es posterior a ts2

SELECT DATEDIFF('2024-01-05 15:30:00', '2024-01-02 00:59:59');

Salida:

+--------+
| EXPR$0 |
+--------+
|      3 |
+--------+

Ejemplo 3: ts1 y ts2 corresponden a la misma fecha

Las horas difieren, pero la fecha es la misma, por lo que el resultado es 0:

SELECT DATEDIFF('2024-01-02 15:30:00', '2024-01-02 00:59:59');

Salida:

+--------+
| EXPR$0 |
+--------+
|      0 |
+--------+

UNIX_TIMESTAMP

Convierte una marca de tiempo o una cadena de marca de tiempo en una marca de tiempo UNIX. Devuelve un valor DOUBLE. Esta función es la operación inversa de FROM_UNIXTIME.

Importante

UNIX_TIMESTAMP requiere LindormTable 2.8.0 o posterior y Lindorm SQL 2.9.0.0 o posterior. Si es necesario, actualice la versión secundaria del motor de LindormTable en la consola de Lindorm.

La precisión del valor devuelto depende del tipo de entrada:

  • Entrada TIMESTAMP: se conservan 3 decimales.

  • Entrada VARCHAR: la cadena representa la marca de tiempo en la zona horaria de la sesión actual. Se conservan hasta 6 decimales.

UNIX_TIMESTAMP se puede utilizar en:

Sintaxis

UNIX_TIMESTAMP(ts)

Parámetros

Parámetro

Obligatorio

Descripción

ts

Sí

La marca de tiempo que se va a convertir. Debe ser de tipo TIMESTAMP o VARCHAR.

Ejemplos

Cree una tabla e inserte datos de ejemplo:

-- Create a table with TIMESTAMP and VARCHAR timestamp columns.
CREATE TABLE t1(p1 INT, c1 TIMESTAMP, c2 VARCHAR, c3 DOUBLE, PRIMARY KEY(p1));

-- Insert sample rows.
UPSERT INTO t1(p1, c1, c2, c3) VALUES
(1, '2025-01-01 08:30:00',          '2025-01-01 08:30:00',          '12.24'),
(2, '1970-01-01 08:00:00.123',      '1970-01-01 08:00:00.123',      '10.32'),
(3, '1970-01-01 08:00:10.13579',    '1970-01-01 08:00:10.13579',    '10.12'),
(4, '1970-01-01 08:00:10.123456789','1970-01-01 08:00:10.123456789','17.33');

Ejemplo 1: consultar marcas de tiempo UNIX desde una tabla

Los valores TIMESTAMP (c1) conservan 3 decimales; los valores VARCHAR (c2) conservan hasta 6.

SELECT p1, UNIX_TIMESTAMP(c1), UNIX_TIMESTAMP(c2) FROM t1;

Salida:

+----+------------+------------+
| p1 | EXPR$1     | EXPR$2     |
+----+------------+------------+
| 1  | 1735691400 | 1735691400 |
| 2  | 0.123      | 0.123      |
| 3  | 10.135     | 10.13579   |
| 4  | 10.123     | 10.123457  |
+----+------------+------------+

Ejemplo 2: filtrar filas con UNIX_TIMESTAMP en una cláusula WHERE

Cuente las filas donde la marca de tiempo UNIX de c1 sea mayor que 10:

SELECT COUNT(*) FROM t1 WHERE UNIX_TIMESTAMP(c1) > 10;

Salida:

+--------+
| EXPR$0 |
+--------+
| 3      |
+--------+

Ejemplo 3: escribir el resultado de UNIX_TIMESTAMP en una columna DOUBLE

Utilice UNIX_TIMESTAMP en una cláusula VALUES para escribir el resultado directamente en la columna DOUBLE c3:

UPSERT INTO t1(p1, c3) VALUES(1, UNIX_TIMESTAMP('1970-01-01 08:00:00.123'));

Para comprobar el resultado, ejecute:

SELECT * FROM t1;

Especificadores de formato

A continuación se muestran los especificadores de formato compatibles con DATE_FORMAT y FROM_UNIXTIME.

Importante

Los caracteres de la cadena de formato que no comienzan con % se devuelven tal cual.

Especificador

Salida

Descripción

%a

Sun a Sat

Nombre abreviado del día de la semana.

%b

Jan a Dec

Nombre abreviado del mes.

%c

0 a 12

Mes como valor numérico.

%D

1st, 2nd, 3rd...

Día del mes con sufijo ordinal.

%d

00 a 31

Día del mes con dos dígitos.

%e

00 a 31

Día del mes con dos dígitos.

%f

000000 a 999999

Microsegundos.

%H

00 a 23

Hora en formato de 24 horas con dos dígitos.

%h

01 a 12

Hora en formato de 12 horas con dos dígitos.

%I

01 a 12

Hora en formato de 12 horas con dos dígitos.

%i

00 a 59

Minutos con dos dígitos.

%j

001 a 366

Día del año con tres dígitos.

%k

0 a 23

Hora en formato de 24 horas como valor numérico.

%l

1 a 12

Hora en formato de 12 horas como valor numérico.

%M

January a December

Nombre completo del mes.

%m

01 a 12

Mes con dos dígitos.

%p

AM o PM

Indicador AM/PM.

%r

hh:mm:ss AM/PM

Hora en formato de 12 horas.

%S

00 a 59

Segundos con dos dígitos.

%s

00 a 59

Segundos con dos dígitos.

%T

hh:mm:ss

Hora en formato de 24 horas.

%W

Sunday a Saturday

Nombre completo del día de la semana.

%w

0 a 6

Día de la semana como número. 0 = domingo, 1 = lunes.

%Y

Año de cuatro dígitos

Por ejemplo: 2025.

%y

Año de dos dígitos

Basado en los últimos dos dígitos del año. Por ejemplo: 24 para 2024.

%%

%

Un signo de porcentaje literal.

%x

x

Cualquier letra que no sea un especificador reservado se devuelve tal cual. Por ejemplo: %U devuelve U.