🔙 Backend/🗄️ Database

    [Mysql] 날짜 시간 더하기, 빼기 (DATE_ADD, DATE_SUB)

    [Mysql] 날짜 시간 더하기, 빼기 (DATE_ADD, DATE_SUB)

    특정 날짜, 시간에서 일정 초,분,시간을 더하거나 빼야하는 경우 더하기 DATE_ADD(날짜 시간, INTERVAL 숫자 단위) SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND); # 1초 SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE); # 1분 SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR); # 1시간 빼기 DATE_SUB(날짜 시간, INTERVAL 숫자 단위) SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND); # 1초 SELECT DATE_SUB(NOW(), INTERVAL 1 MINUTE); # 1분 SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR); # 1시간 NOW()..

    [Mysql] mysql에서 현재 연결된 connection 찾기

    Node.js와 Mysql사이에 발생한 Connection lost 문제를 알아보던 중 사용한 mysql 명령어들을 정리한다. 현재 연결된 Thread 개수 show status like 'Threads_connected'; 현재 실행중인 Thread 개수 show status like 'Threads_running'; 최대 가능한 connection 개수 show variables like 'max_connections'; 현재 연결된 connection 목록 show full processlist;

    [MySql] 숫자/문자 자리수 맞추기 (LPAD, RPAD)

    날짜의 경우, 주로 고정된 자리수로 표기하게 된다. 한자리 숫자인 경우 앞에 0이 붙어야한다. 예를 들어 2-28로 표기하지 않고, 02-28과 같이 표기하는 것을 sql을 이용해보면 LPAD('값', '2', '0') # 값, 자리수, 빈값에 넣을 문자 LPAD는 자리수를 맞추고, 남은자리에 3번째 파라미터의 값을 채워넣게된다. SELECT LPAD(2, '2', '0'); # result: '02' SELECT LPAD(1, '5', '0'); # result: '00001' LPAD는 왼쪽이라면, RPAD는 값의 오른쪽에 자리수를 맞춰서 문자를 넣는다. SELECT RPAD(1, '2', '0'); # result: '10' SELECT RPAD(100, '5', '0'); # result: '10..

    [MySql] GROUP BY 내부 정렬하기

    [MySql] GROUP BY 내부 정렬하기

    각 그룹내에서 랜덤한 행, 또는 특정조건으로 정렬을 해야하는 경우 나는 seedIdx컬럼으로 GROUP BY를 하고, 그룹내에서 stage를 랜덤하게 추출하고 싶다. SELECT * FROM PlantImg; 아주 단순하게 생각해서, 정렬(ORDER BY)과 그룹화(GROUP BY)를 동시에 해보면 SELECT idx, seedIdx, stage FROM PlantImg GROUP BY seedIdx ORDER BY RAND(); 이렇게 GROUP BY가 먼저 수행되기때문에 그루핑된 행들이 정렬되게 된다. 그래서 stage는 내부에서 정렬이 되지 않고 모두 각 그룹의 첫번째 행인 stage=1이 나오게 되었다. 해결방법 SELECT seedIdx, (SELECT stage FROM PlantImg WHE..

    [Mysql] 현재 날짜 기준으로 특정기간만 가져오기

    최근본 물품 API 구현 중, 최근 6개월에 대해서만 조회를 해야했다. TIMESTAMPDIFF를 이용하면 두 날짜의 차이를 계산할 수 있다 TIMESTAMPDIFF(MONTH , now(), '컬럼')>-6; WHERE 절에 위 코드를 추가해주면 된다, '컬럼' 위치에는 특정 날짜 컬럼이나, 구체적인 날짜가 들어가면 된다 MONTH대신 YEAR, DAY, WEEK, HOUR 등 단위변경도 가능하다 날짜까지 아직 남은 경우는 양수로 출력되고, 해당날짜가 지난 경우는 음수로 출력된다 예제) TIMESTAMPDIFF(WEEK , now(), createdAt)>-10; TIMESTAMPDIFF(WEEK , now(), '2021-04-03')