Zoeken…


Opmerkingen

officiële documentatie: gegevenstypen in SQLite versie 3

TYPEOF-functie

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

Booleans gebruiken

Voor booleans gebruikt SQLite gehele getallen 0 en 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

Kolomtypen handhaven

SQLite gebruikt dynamisch typen en negeert gedeclareerde kolomtypen:

> 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       

(Gedeclareerde kolomtypen worden echter gebruikt voor type-affiniteit .)

Om typen af te dwingen, moet u een beperking toevoegen met de functie typeof () :

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

(Als een dergelijke kolom NULLable moet zijn, moet u expliciet 'null' toestaan.)

Datum / tijd types

SQLite heeft geen afzonderlijk gegevenstype voor datum- of tijdwaarden.

ISO8601-strings

De ingebouwde trefwoorden CURRENT_DATE , CURRENT_TIME en CURRENT_TIMESTAMP retourneren tekenreeksen in ISO8601-indeling:

> 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

Dergelijke waarden worden ook begrepen door alle ingebouwde datum / tijd-functies :

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

Juliaanse dagnummers

De ingebouwde datum / tijd-functies interpreteren getallen als Juliaanse dagen :

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

De functie julianday() converteert elke ondersteunde datum- / tijdwaarde naar een Juliaans julianday() :

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

Unix-tijdstempels

De ingebouwde datum / tijd-functies kunnen getallen interpreteren als Unix-tijdstempels met de unixepoch modifier:

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

De strftime() -functie kan elke ondersteunde datum / tijd-waarde omzetten in een Unix-tijdstempel:

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

niet-ondersteunde formaten

Het zou mogelijk zijn om datum / tijd-waarden in een ander formaat in de database op te slaan, maar de ingebouwde datum / tijd-functies zullen ze niet ontleden en NULL retourneren:

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

> SELECT datetime('8 Jul 2016');
 


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow