Resumen :en este tutorial, le mostraremos cómo trabajar con los valores de fecha y hora de SQLite y usar las funciones integradas de fechas y horas para manejar los valores de fecha y hora.
SQLite no es compatible con la clase de almacenamiento de fecha y/u hora integrada. En cambio, aprovecha algunas funciones de fecha y hora integradas para usar otras clases de almacenamiento como TEXT
, REAL
, o INTEGER
para almacenar los valores de fecha y hora.
Usando el TEXT
clase de almacenamiento para almacenar la fecha y la hora de SQLite
Si usa el TEXT
clase de almacenamiento para almacenar el valor de fecha y hora, debe usar el formato de cadena ISO8601 de la siguiente manera:
YYYY-MM-DD HH:MM:SS.SSS
Code language: SQL (Structured Query Language) (sql)
Por ejemplo, 2016-01-01 10:20:05.123
Primero, cree una nueva tabla llamada datetime_text
para demostración.
CREATE TABLE datetime_text(
d1 text,
d2 text
);
Code language: SQL (Structured Query Language) (sql)
Pruébalo
La tabla contiene dos columnas d1
y d2
con TEXT
tipo de datos.
Para insertar valores de fecha y hora en el datetime_text
tabla, utiliza el DATETIME
función.
Por ejemplo, para obtener el valor de fecha y hora UTC actual, pasa la cadena ahora literal a la función de la siguiente manera:
SELECT datetime('now');
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Para obtener la hora local, pasa un argumento adicional localtime
.
SELECT datetime('now','localtime');
Code language: SQL (Structured Query Language) (sql)
Pruébalo
En segundo lugar, inserte los valores de fecha y hora en el datetime_text
tabla de la siguiente manera:
INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Tercero, consulte los datos del datetime_text
mesa.
SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Usando REAL
clase de almacenamiento para almacenar valores de fecha y hora de SQLite
Puedes usar el REAL
clase de almacenamiento para almacenar los valores de fecha y/o hora como números de días julianos, que es el número de días desde el mediodía en Greenwich el 24 de noviembre de 4714 a.C. basado en el calendario gregoriano proléptico.
Echemos un vistazo a un ejemplo del uso de la clase de almacenamiento REAL para almacenar valores de fecha y hora.
Primero, crea una nueva tabla llamada datetime_real
.
CREATE TABLE datetime_real(
d1 real
);
Code language: SQL (Structured Query Language) (sql)
Pruébalo
En segundo lugar, inserte el valor de fecha y hora "actual" en el datetime_real
mesa.
INSERT INTO datetime_real (d1)
VALUES(julianday('now'));
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Usamos el julianday()
función para convertir la fecha y hora actual al día juliano.
Tercero, consulte los datos del datetime_real
mesa.
SELECT d1 FROM datetime_real;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
La salida no es legible por humanos.
Afortunadamente, puede usar el date()
incorporado y time()
funciones para formatear un valor de fecha y hora de la siguiente manera:
SELECT
date(d1),
time(d1)
FROM
datetime_real;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Usando INTEGER
para almacenar valores de fecha y hora de SQLite
Además de TEXT
y REAL
clases de almacenamiento, puede usar el INTEGER
clase de almacenamiento para almacenar valores de fecha y hora.
Normalmente usamos el INTEGER
para almacenar la hora UNIX, que es el número de segundos desde 1970-01-01 00:00:00 UTC
. Vea el siguiente ejemplo:
Primero, cree una tabla que tenga una columna cuyo tipo de datos sea INTEGER
para almacenar los valores de fecha y hora.
CREATE TABLE datetime_int (d1 int);
Code language: SQL (Structured Query Language) (sql)
Pruébalo
En segundo lugar, inserte el valor de fecha y hora actual en el datetime_int
mesa.
INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Tercero, consulte los datos de datetime_int
mesa.
SELECT d1 FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Es un número entero.
Para formatear el resultado, puede usar el datetime()
incorporado funcionan de la siguiente manera:
SELECT datetime(d1,'unixepoch')
FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Con SQLite, puede elegir libremente cualquier tipo de datos para almacenar valores de fecha y hora y usar la función integrada de fechas y horas para convertir entre formatos.
Para obtener información detallada sobre las funciones de fechas y horas de SQLite, consulte las funciones integradas de fechas y horas.
En este tutorial, ha aprendido a usar el TEXT
, REAL
y INTEGER
Clases de almacenamiento para almacenar valores de fecha y hora. Además, aprendió a usar las funciones integradas de fechas y horas para convertir los valores de fecha y hora almacenados en formatos legibles.