sqlite
Types de données
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');