Recherche…


Remarques

documentation officielle: Types de données dans SQLite Version 3

Fonction 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

En utilisant des booléens

Pour les booléens, SQLite utilise les entiers 0 et 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

Application des types de colonnes

SQLite utilise le typage dynamique et ignore les types de colonnes déclarés:

> 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       

(Cependant, les types de colonnes déclarés sont utilisés pour l' affinité de type .)

Pour appliquer des types, vous devez ajouter une contrainte avec la fonction typeof () :

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

(Si une telle colonne doit être NULL, vous devez explicitement autoriser 'null' .)

Types date / heure

SQLite n'a pas de type de données séparé pour les valeurs de date et d'heure.

Chaînes ISO8601

Les mots-clés intégrés CURRENT_DATE , CURRENT_TIME et CURRENT_TIMESTAMP renvoient des chaînes au format 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

Ces valeurs sont également comprises par toutes les fonctions de date / heure intégrées :

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

Nombre de jours juliens

Les fonctions de date / heure intégrées interprètent les nombres en jours juliens :

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

La fonction julianday() convertit toute valeur de date / heure prise en charge en un nombre de jours juliens:

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

Horodatage Unix

Les fonctions de date / heure intégrées peuvent interpréter les nombres comme des horodatages Unix avec le modificateur unixepoch :

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

La fonction strftime() peut convertir toute valeur de date / heure prise en charge en un horodatage Unix:

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

formats non supportés

Il serait possible de stocker les valeurs de date / heure dans tout autre format de la base de données, mais les fonctions de date / heure intégrées ne les analyseront pas et renverront 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow