어제, datetime에 대해서 잠깐 언급을 했었습니다. 어떻게 하면 두 시간의 차를 잘 계산할 수 있을까요? 예전에 time 함수를 이야기 할 때, 1970년 1월 1일 UTC+0일 때부터 현재까지 흐른 시간이 몇 초인지를 리턴해 준다고 했었습니다. mysql도 이와 동일한 일을 하는 함수가 있습니다. 그 함수는 unix_timestamp입니다. 사용 방법은 아래와 같습니다. 인자로 Date나, Datetime과 같은 것을 넘겨주거나, 아니면 인자를 넘기지 않는 방법이 있습니다. 이 글에서 말하는 기준 시간은 1970년 1월 1일 0시 0분 0초 UTC+0인데요. 제 timezone이 KST+9로 설정이 되어 있어요. 그러면, 실제로 UTC+0 시간대를 쓰는 지역에서는 1970년 1월 1일 0시 0분 ..
mysql 검색 결과
mysql에서, 시간을 다루는 데이터 형도 꽤 많습니다. 프로그래머스에, 이런 문제가 나왔었습니다. 테이블 2개가 주어집니다. 입양을 간 동물에 대한 Table이 주어지고, 보호소에 온 동물들에 대한 Table이 주어집니다. 그런데 오늘 제가 날짜에 대해서 합니다. 그러면. 대충 어떤 쿼리가 들어왔는지 감이 오시나요? datetime이 어떤 형인지 봅시다. 먼저, 아래 쿼리를 생각해 봅시다. '2019-09-19 00:00:00'이라는 데이터는 varchar형입니다. 문자열입니다. 저는 이것을 datetime 형으로 변환을 할 건데요. 이를 위해서 cast 함수를 씁니다. 그러면, 이 값이 datetime으로 들어갔을 건데요. Binary가 어떻게 들어갔는지 봅시다. 헥사로 32, 30, 31, 39. ..
문자열 데이터를 가지고, 특수한 형태로 가공하는 것은 프로그래밍을 하다 보면 자주 보이는 문제 중 하나입니다. 예를 들자면, 전화번호를 가지고 앞에 국번만 따서 어느 지역인지 알아내거나, 이메일 주소를 통해서, 어느 메일을 쓰는지 알아내거나. 이러한 문제들이 많은데요. 오늘은 그 중, instr을 알아보도록 하겠습니다. C언어에서 strstr을 생각하시면 좋습니다. 다만, 다른점은 strstr은 해당 pattern이 나타나는 처음 address를 리턴한다는 것입니다. 먼저, 1번째 인자는 string, 2번째 인자는 pattern입니다. 즉, string 안에 pattern이 있는지 확인을 합니다. 만약에 있다면, 처음 패턴이 나타난 위치를 리턴합니다. 예를 들어서, 전화번호에서 국번을 찾아야 하는 경우..
오늘은 간단하게 mysql에서 유용하게 쓸 수 있는 함수인 if문을 하나 알아보겠습니다. 다음과 같이 작성합니다. if(cond1,eval1,eval2) 이것은 cond1이 참일 때, eval1이 평가되고, 아니라면 eval2가 평가됩니다. 이것을 순서도로 나타내면, 아래 그림과 같습니다. 엑셀의 그 함수와 매우 유사해 보입니다. 어떻게 쓰는 지 간단하게 예제를 보고, 해커랭크에 나온, 심화 문제를 같이 풀어보도록 하겠습니다. 먼저 worker 테이블을 봅시다. 그러면 아래와 같이 되어 있습니다. salary가 NULL 값인 필드가 있는데요. 아차. 제가 신입 사원 분들의 월급을 넣는 것을 깜빡 했지 뭡니까? 'Arie'와 'David'가 신입 사원인데요. 이들은 5000 단위의 월급을 받습니다. 물론 ..
그룹 별로, 예를 들어서 카데고리 별로, 아니면 분반 별로 평균을 구하거나, max 값을 구할 수 없을까요? 그룹 별로 집계하기 위해서 group by 절을 씁니다. mysql을 설치하면 sakila 데이터베이스가 있는데요. 이는 영화 대여 시스템에 필요한 테이블들을 구축한 것으로 보입니다. JOIN문도 연습하기 좋은 듯 싶으니, 오늘 예제는 여기서 써 보도록 하겠습니다. 먼저, film_category에서 데이터들을 뽑아봅시다. 그러면 영화의 ID랑, 카데고리의 ID가 있네요. 여기에서 저는, 카데고리 별로 몇 개의 영화를 대여점에서 가지고 있는지를 그룹화 해서 출력하고 싶어요. 그러면 어떻게 해야 할까요? 무엇을 기준으로 group 하는 건가요? 카데고리 별로. category_id인가요? 네. 그러..
최근댓글