수색…


비고

공식 문서 : SQLite 버전 3의 데이터 유형

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

불린 사용하기

부울 값의 경우 SQLite는 01 정수를 사용합니다.

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

열 유형 적용

SQLite는 동적 유형 지정을 사용하고 선언 된 열 유형을 무시합니다.

> 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       

그러나 선언 된 열 유형은 유형 선호도에 사용됩니다.

유형을 적용하려면 typeof () 함수 와 함께 제약 조건을 추가해야 합니다 .

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

(그러한 열이 'null' 가능해야 할 경우 'null' 을 명시 적으로 허용해야합니다.)

날짜 / 시간 유형

SQLite에는 날짜 또는 시간 값에 대한 별도의 데이터 유형이 없습니다.

ISO8601 문자열

내장 키워드 CURRENT_DATE , CURRENT_TIMECURRENT_TIMESTAMP 는 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

이러한 값은 모든 내장 날짜 / 시간 함수 에서도 이해할 수 있습니다 .

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

율리우스 력의 날 수

내장 날짜 / 시간 함수 는 숫자를 율리우스 력으로 해석합니다.

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

julianday() 함수는 지원되는 모든 날짜 / 시간 값을 율리우스 julianday() 로 변환합니다.

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

유닉스 타임 스탬프

내장 날짜 / 시간 함수unixepoch 수정자를 사용하여 숫자를 Unix 타임 스탬프 로 해석 할 수 있습니다.

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

strftime() 함수는 지원되는 모든 날짜 / 시간 값을 Unix 타임 스탬프로 변환 할 수 있습니다.

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

지원되지 않는 형식

데이터베이스의 다른 형식으로 날짜 / 시간 값을 저장할 수는 있지만 기본 제공 날짜 / 시간 함수는 파싱하지 않고 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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow