mysql의 datediff에 대해서 알아봅시다. 물론, 다른 SQL에서는 1번째 인자로 day의 차이를 구할 것인지, year의 차이를 구할 것인지, 등등을 받습니다. 그러면 몇 일 차이나는지, 몇 달이 차이나는지 등을 구할 수 있을 거에요. 그런데 mySQL에서는 그렇지 않습니다. 2개의 인자만 있는데요. date 2개를 받아서 그 차이를 리턴해 줍니다. DATEDIFF(t1,t2); t1과 t2의 차이를 리턴해 줍니다. t1이 더 이전의 날짜라면, 0, 또는 음수 값이 리턴됩니다. 예제를 몇 개 보고, 실제 sakila 데이터 베이스에서 어떻게 적용할 수 있는지 보도록 하겠습니다. 먼저 아래 쿼리를 작성해 보겠습니다. 2010/8/25와 2011/8/25의 차이를 알고 싶어요. 그런데, 2011년은..
mysql 검색 결과
DATETIME, TIME의 차이를 계산할 수 있는 방법이 없을까요? mysql에는 timediff 함수가 있습니다. 이것은 2개의 datetime/time의 차이를 time 자료형으로 리턴해 주는 함수입니다. 당연하게도, 2개의 자료형은 같아야 합니다. timediff(T1,T2); T1과 T2의 차이를 돌려줍니다. 만약에 T1보다 T2가 더 나중에 있는 시간이라면 -hh:mm:ss를 돌려줍니다. 먼저 아래 쿼리를 봅시다. 이것은 time형 2개를 받았습니다. T1이 2시 3분 4초, T2가 2시 3분 2초입니다. T1이 T2보다 나중에 있는 시간이므로, 결과 값에 -가 붙지 않습니다. T1이 T2보다 얼만큼 나중에 있나요? 2초만큼 나중에 있습니다. 따라서, 00:00:02가 출력이 됩니다. 출력에 ..
select문 말고 오랫만에, DDL문을 해 봅시다. 데이터를 삭제하는 명령어는 delete from 하고, drop table이 있는데요. 이 둘이 어떤 차이점이 있는지 간단하게 알아보도록 하겠습니다. 먼저, t2 테이블에 있는 내용을 봅시다. 그러면, a, b, c, d라는 레코드가 있음을 알 수 있어요. 여기에서, delete from AA where BB 명령어는 AA 테이블에 있으면서, BB 조건을 만족하는 레코드를 모두 삭제하라는 의미입니다. 그러면, AA가 t2이고 BB가 str = 'a'인 경우에는 어떨까요? 이 때에는 t2 테이블에서, str 필드가 'a'인 것을 모두 삭제하라는 의미입니다. str 필드가 'a'인 record가 삭제될 겁니다. 그러면 남은 것은 'b', 'c', 'd'일..
아주 옛날에 group by에 대해서 했었습니다. 이것이랑 짝을 맞추는 절이 having 절인데요. 사실 이것이랑 where 절이랑 헷갈리기가 꽤 쉬운 듯 싶습니다. group by는, 어떠한 필드의 값을 기준으로 그룹화를 시키는 것이라고 했습니다. [관련글] [코딩/Sql] - mysql group by 절 : 그룹별로 나눠서 집계한다. 꽤 오래전에 썼던 글이군요. 혹여나, group by 절을 모르신다면 보고 오셔도 좋을 듯 싶습니다. having를 알기 위해서는, 비슷하게 생겨먹은 where 하고, having의 해석 순서를 알 필요가 있습니다. 사실, 더 중요한 건 해석 능력입니다. 국어 영역인 셈입니다. 먼저 테이블의 필드가 이라고 해 봅시다. 이 때, 우리는 가격이 25원 이상인 물건이 2개 ..
어제 잠깐 outer join에 대해서 했었습니다. 거기에서 on 절이 나왔었는데요. where 조건과 헷갈릴 여지가 꽤 다분해 보였습니다. 이 둘의 차이점만 간단하게 다루어 보도록 하겠습니다. 그 전에 이런 질문을 생각해 봅시다. 이 두 쿼리는 임의의 t1, t2 데이터에 대해서, 임의의 condition 1과 condition2에 대해서 같은 결과를 리턴할까요? 이렇게 극단적으로 가는 질문은 아니오가 답인 경우가 많습니다. 어떻게 다를까요? on 뒤에 붙는 조건은, JOIN 조건을, where 뒤에 붙는 조건은 필터링 조건을 의미합니다. 이 둘이 어떻게 다른지 예제 테이블로 보여드리도록 하겠습니다. 테이블 t1은 아래와 같습니다. 다음에, 테이블 t2는 아래와 같습니다. 그러면 여기서 JOIN 조건이..
최근댓글