sql 에서 이런건 어떻게 하나요?

fruitsclipper의 이미지

글이 연속으로 2개가 올라갔습니다. 삭제 어떻게 하나요?

다음과 같이 table 에 날짜와 그 날짜의 index 가 저장되어 있습니다.

2012.01.02 0
2012.01.05 1
2012.01.08 2

2012.01.07 에 대한 index 값을 찾으려면, 데이터가 없으므로 아무것도 안나옵니다,
대신에 2012.01.07 일 바로 이전의 값인 2012.01.05 일의 index 인 1 의 값을 가져오도록 하고 싶습니다.

이것을 sql 로 효율적으로 처리하려면 어떻게 해야 할까요?

pogusm의 이미지

mysql> select * from table where date <= '2012-01-07' limit 1;

날짜는 DATE 타입.

fruitsclipper의 이미지

답변 감사합니다, 그런데
이렇게 하면 2012-01-07 최근의 날짜가 나오는게 아니라, 2012-01-07 이전의 날짜중에서 가장 멀리있는 첫번째 날짜가 나옵니다.

fruitsclipper의 이미지

아 그런데 날짜는 date 타입이 아니에요, sqlite 라서 date 타입이 따로 없길래 그냥 text 로 집어넣었습니다

pogusm의 이미지

sqlite를 제대로 써본적이 없어서....

sqlite에서 date타입를 지원하지 않는다면,

날짜를 timestamp 로 변경해서, int타입으로 저장해서 사용하면 될거 같습니다.

jnypkim의 이미지

제일 가까이 있는 것을 뺄 수 있을 것 같네요 ^^;

asdefary의 이미지

mysql> SELECT * FROM `table` WHERE `date` <= '2012-01-07' ORDER BY `date` DESC limit 1;

이렇게?

나의 모든 생명은 단 한 명의 소녀를 위하여.