2010-12-30 3 views
0

SQLite 데이터베이스에 4 개의 필드가있는 테이블이 있습니다. create 문은 다음과 같습니다.
CREATE TABLE [time] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[from] TIME NOT NULL,
[until] TIME NOT NULL,
[message] TEXT NOT NULL,
)
삽입 (및 업데이트/선택)으로 SQLite 시간

생성 후 테스트 데이터를 추가하고 싶습니다. 이를 위해 내가 사용
INSERT INTO time('from','until','message') VALUES('00:00','01:00','test')

데이터베이스의 결과는 분명히 시간이 내가 원하는 것이 아니다 즉, 잘못된
id = 1
from = 0:00:00
until = 0:00:00
message = test

입니다. 삽입 문에서 무엇이 잘못 되었습니까? 이미 this website을 찾았지만 어떻게 도움이 될지 모르겠습니다. 물론 샘플 코드는 큰 도움이 될 수 있습니다.

+0

나는이 재현 할 수 있습니다 : 그것은 다음과 같은 날짜와 시간보다는 혼자 시간 ... 뭔가 포함하는 문자열로 값을 저장하는 것이 더 의미가 SQLite는> SELECT 시간 ([에서]) FROM 시간; 00:00:00 sqlite> SELECT 시간 ([until]) FROM 시간; 01:00:00 – dkarp

+0

sqlite에는 http://www.sqlite.org/datatype3.html에 따라 TIME 데이터 유형이 없으므로 'from'및 'until'열에 텍스트를 삽입했습니다. 이 열에 저장 한 문자열에 날짜 및 시간 값 ("YYYY-MM-DD HH : MM : SS.SSS"형식)을 포함하는 것이 좋습니다. 날짜를 기록하지 않고 데이터베이스에 시간을 기록하는 것은 실제로 의미가 없습니다. – d5e5

답변

1

결과를 재현 할 수 없으며 dkarp과 같은 결과가 나타납니다. sqlite 테이블의 열에 데이터 유형을 할당 할 필요가 없으므로 유효하지 않은 테이블을 지정하면 무시됩니다. 귀하의 경우 텍스트 값이 텍스트로 저장되었습니다.

sqlite는 sqlite.org/datatype3.html에 따라 TIME 데이터 유형이 없으므로 '보낸 사람'및 'until'열의 선호도로 TEXT를 할당 할 수 있습니다.

sqlite> CREATE TABLE [time] (
    ...> [id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
    ...> [from] TEXT NOT NULL, 
    ...> [until] TEXT NOT NULL, 
    ...> [message] TEXT NOT NULL 
    ...>); 
sqlite> 
sqlite> 
sqlite> INSERT INTO time('from','until','message') VALUES(date('now') || ' 00:00',date('now') || ' ' || '01:00','test'); 
sqlite> INSERT INTO time('from','until','message') VALUES(date('now') || ' 14:00',date('now') || ' ' || '15:30','test'); 
sqlite> 
sqlite> SELECT * from time; 
1|2010-12-30 00:00|2010-12-30 01:00|test 
2|2010-12-30 14:00|2010-12-30 15:30|test 
+0

내가 사용하는 설정에서, 나는 정말로 날짜가 필요하지 않습니다. 나는 그 시간에만 intereted이지만 TEXT를 사용하여 값을 저장할 때도 그렇게 할 수 있습니다. 의견을 보내 주셔서 감사합니다. – patrix

관련 문제