말 그대로다. 이건 http://ckbcorp.tistory.com/1027 하고도 이어지는 주제다.
너님이 SQLite 에서 DateTime 을 이용할 때 데이터 타입을 뭘 쓸 거냐?
TEXT 쓰겠지? 왜냐면 SQLite 는 데이터 타입으로 DateTime 를 지원하지 않으니까.
그런데, 내 경험으로는, TEXT 보다 INTEGER 나 NUMERIC 이 명확하다.
이야기하기가 조금 까다로운데, 최대한 알기쉽게 가보자.
1. SQLite 는 DateType 으로 DateTime 이 없다.
2. 그런데 쿼리로 기간 관련 검색을 하려면 , 보통 'yyyy-MM-dd HH:mm:ss' 로 검색을 할 거다.
3. 기간 검색이라는 게, 결국은 문자열 검색이니, DateTime 이 없는 SQLite는 당연히 타입으로 TEXT 가 아니냐.
고 생각하겠지?
4. 근데 나는 DateTime 대신으로 TEXT 대신 INTEGER, NUMERIC 을 쓰라는 거다.
이렇게 되면 데이터를 저장, 갱신, 검색할 때 사용자 ( 혹은 프로그램 ) 에서 발생하는 시각 정보를 디비에서 꺼내거나 저장할 때, 무조건 UNIXTIME 으로 변경하는 번거로움을 거쳐야 한다.
그런데 왜 SQLITE에서 시간 정보 저장을 TEXT 대신 UNIXTIME 으로 하라는 건가?
그건, SQLite 의 DateTime 을 NULL 처리가 지멋대로이기 때문이다.
아...갑자기 쓰기가 급 귀찮다. 최대한 짧게 설명하면,
예를 들어 너님이 C# + SQLite 를 사용하는데, 디비에서 데이터를 꺼내온다 치자. 그럼
DateTime 날짜변수1 = reader["날짜필드명"];
이럴 거잖아? 이때 "날짜필드명" 이 만약 NULL 이면, 프로그램상에서 case 가 너무 많이 생긴다고. NULL, "", 데이터포멧 안맞는 "2019-05" 뭐 기타등등등...
오히려 unixtime 이라고 가정하면 0 값인지 아닌지만 판단하면 된단 말야.
[ 설명이 귀찮다. 알아서들 알아들으시게.개 ]
'프로그램' 카테고리의 다른 글
Windows 10 테스트하려면, 그냥 iso 구워서 테스트 해라. Windows 7 , 8 에서 업뎃하지마. (0) | 2016.12.03 |
---|---|
SQLite 는 ALTER TABLE MODIFY 가 없단다. (1) | 2016.09.04 |
SQLite Manager 프로그램을 사용할 경우, Modify 메뉴는 ALTER TABLE 과 다르게 동작한다. (0) | 2016.06.21 |
SQLITE 에는 TRUNCATE 가 없다. (0) | 2016.06.03 |
이미지 병합 프로그램 버전업 4. (8) | 2016.05.19 |