Buscar..


Observaciones

Documentación oficial: tipos de datos en SQLite versión 3.

Función TYPEOF

sqlite> SELECT TYPEOF(NULL);
null
sqlite> SELECT TYPEOF(42);
integer
sqlite> SELECT TYPEOF(3.141592653589793);
real
sqlite> SELECT TYPEOF('Hello, world!');
text
sqlite> SELECT TYPEOF(X'0123456789ABCDEF');
blob

Usando booleanos

Para los booleanos, SQLite usa números enteros 0 y 1 :

sqlite> SELECT 2 + 2 = 4;
1
sqlite> SELECT 'a' = 'b';
0
sqlite> SELECT typeof('a' = 'b');
integer
> CREATE TABLE Users ( Name, IsAdmin );
> INSERT INTO Users VALUES ('root', 1);
> INSERT INTO Users VALUES ('john', 0);
> SELECT Name FROM Users WHERE IsAdmin;
root

Hacer cumplir los tipos de columna

SQLite utiliza la escritura dinámica e ignora los tipos de columna declarados:

> CREATE TABLE Test (
      Col1 INTEGER,
      Col2 VARCHAR(2),       -- length is ignored, too
      Col3 BLOB,
      Col4,                  -- no type required
      Col5 FLUFFY BUNNIES    -- use whatever you want
  );
> INSERT INTO Test VALUES (1, 1, 1, 1, 1);
> INSERT INTO Test VALUES ('xxx', 'xxx', 'xxx', 'xxx', 'xxx');
> SELECT * FROM Test;
1   1   1   1   1         
xxx xxx xxx xxx xxx       

(Sin embargo, los tipos de columna declarados se utilizan para la afinidad de tipo ).

Para imponer tipos, debe agregar una restricción con la función typeof () :

CREATE TABLE Tab (
    Col1 TEXT   CHECK (typeof(Col1) = 'text' AND length(Col1) <= 10),
    [...]
);

(Si dicha columna debería ser NULLable, debe permitir explícitamente 'null' ).

Tipos de fecha / hora

SQLite no tiene un tipo de datos separado para los valores de fecha u hora.

Cuerdas ISO8601

Las palabras clave integradas CURRENT_DATE , CURRENT_TIME y CURRENT_TIMESTAMP devuelven cadenas en formato ISO8601:

> SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
CURRENT_DATE  CURRENT_TIME  CURRENT_TIMESTAMP  
------------  ------------  -------------------
2016-07-08    12:34:56      2016-07-08 12:34:56

Tales valores también se entienden por todas las funciones de fecha / hora incorporadas :

> SELECT strftime('%Y', '2016-07-08');
2016

Números del día juliano

Las funciones de fecha / hora incorporadas interpretan los números como días julianos :

> SELECT datetime(2457578.02425926);
2016-07-08 12:34:56

La función julianday() convierte cualquier valor de fecha / hora admitido en un número de día juliano:

> SELECT julianday('2016-07-08 12:34:56');
2457578.02425926

Marcas de tiempo de Unix

Las funciones de fecha / hora incorporadas pueden interpretar números como marcas de tiempo Unix con el modificador de unixepoch :

> SELECT datetime(0, 'unixepoch');
1970-01-01 00:00:00 

La función strftime() puede convertir cualquier valor de fecha / hora admitido en una marca de tiempo Unix:

> SELECT strftime('%s', '2016-07-08 12:34:56');
1467981296 

formatos no compatibles

Sería posible almacenar los valores de fecha / hora en cualquier otro formato en la base de datos, pero las funciones de fecha / hora integradas no las analizarán y devolverán NULL:

> SELECT time('1:30:00');   -- not two digits

> SELECT datetime('8 Jul 2016');
 


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow