mysql

JAVA

[Java] LocalDateTime 과 Instant

프로젝트 진행 중에 데이터를 생성한 시간과 업데이트한 시간에 대한 필드를 정의하며 타입에 대한 고민이 들었다. LocalDateTime 만을 고려하고 있다가 Instant 라는 타입을 처음 알았기 때문이다. 해서 그에 대해 정리를 해보려한다. LocalDateTime 과 Instant 이 둘은 자바 8부터 도입된 날짜와 시간을 표현하는 데에 사용된다. 1. LocalDateTime - 시간대 정보를 포함하지 않으며 단순히 연, 월, 일, 시 등의 지역 날짜와 시간을 나타낸다. - 로컬 서버의 날짜와 시간을 나타내며 그것이 어느 시간대에 속하는 지는 명시하지 않는다. - 날짜, 시간 등을 더하고 빼는 등의 연산이 간단하다. - 시간대에 민감하지 않고 지역적인 서비스에 적합하다. 2. Instant - UT..

SQL

[MySQL] 연/월/일 출력하기 ( 좌측 0 제거 )

프로그래머스에서 아래의 SQL 문제를 풀다가 날짜를 DATE_FORMAT 으로만 출력하는 나를 발견하고 정리하게 되었다. https://school.programmers.co.kr/learn/courses/30/lessons/151139 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr MySQL에서 연월일 출력하기 MONTH (DATE 타입) 으로 월 출력하기 SELECT MONTH(DATE('20220807')) FROM DUAL; -- 8 SELECT DATE_FORMAT(DATE('20220807'),'%m') FROM DUAL; -- 08 문제의 조..

SQL

[SQL] CASE-WHEN, 조건에 따라 출력하기

저장된 값에 대해 조건에 따라 다른 출력을 해야할 때가 있다. CASE-WHEN 표현식은 오라클과 MySQL 간 차이점이 없기 때문에 유용하게 사용할 수 있다. CASE-WHEN 절 사용하기 더보기 CASE WHEN 조건 THEN 조건이 참일 때 실행 ELSE 조건이 거짓일 때 실행 END 사용 방법은 위와 같으며 예제를 적용해보자 나이가 20살 이상이면 '성인', 아니면 '학생' 출력하기 SELECT AGE, CASE WHEN AGE>=20 THEN '성인' ELSE '학생' END 분류 FROM CUSTOMERS; - 실행 결과 USTOMERS 테이블에 AGE라는 필드가 위와 같을 때, 분류는 CASE WHEN 절로 출력한 결과이다. CASE WHEN 절은 꼭 END로 끝내줘야하며 뒤에 별칭을 적용할..

SQL

[Oracle/MySQL] ROWNUM과 LIMIT, 행 수 제한하기

업무 중에 가끔씩 가장 최신 데이터 1개만 출력하는 등의 쿼리를 짠다. 그와 관련해서 ROWNUM과 LIMIT에 대해 정리해보려한다. Oracle에서 행 수 제한하기 ROWNUM으로 특정 개수 데이터 조회하기 SELECT * FROM CUSTOMERS WHERE ROWNUM=2; WHERE 절에서 ROWNUM을 사용하여 데이터 개수를 제한할 수 있다. 단, '=' 연산이기 때문에 조회한 데이터가 1개밖에 없을 때는 결과가 출력되지 않는다. 만약에 보고싶다면 '

SQL

[Oracle/MySQL] CONCAT, 문자열 합치기

문자열을 합치는 예로는 주소가 있다. 주소는 데이터가 나뉘어서 저장되기도 하는데 출력할 때는 문자열을 합쳐야하고 이는 CONCAT으로 해결할 수 있다. CONCAT을 사용하는 방법은 Oracle과 MySQL이 동일하나, 약간의 차이점이 있다. Oracle에서 문자열 합치기 CONCAT으로 문자열 합치기 SELECT CONCAT(CONCAT('문자열',' '), '합치기') FROM DUAL; -- 문자열 합치기 CONCAT을 사용해서 문자열을 더할 수 있지만, 매개변수가 2개로 제한되어있다. 그래서 추가적인 연산을 하려면 CONCAT 함수를 연달아 사용해야한다. ||으로 문자열 합치기 ( Oracle만 가능 ) SELECT "문자열" || " " || "합치기" FROM DUAL; -- 문자열 합치기 위..

SQL

[MySQL] REGEXP, 정규표현식을 이용하여 검색하기

코딩테스트 문제를 풀다가 여러 조건 문자열 중 하나라도 포함된 튜플을 출력하라는 문제가 있었다. ( https://school.programmers.co.kr/learn/courses/30/lessons/151137 ) 단순히 LIKE와 OR연산으로 풀어나가도 문제는 없지만, 좀 더 편리한 방법이 없을까 하다가 찾은 함수가 REGEXP 이다. MySQL에서 정규표현식으로 검색하기 REGEXP로 여러 조건 문자열 중 하나라도 포함된 데이터 출력하기 ( | ) SELECT * FROM Customers WHERE Address REGEXP('Obere|Avda'); REGEXP 앞에 명시한 Address 컬럼에서 'Obere' 혹은 'Avda' 문자열을 포함한 데이터들이 출력된 것을 확인할 수 있다. 문자열..

SQL

[Oracle/MySQL] 날짜 연산, 이전 달 출력하기

오라클을 사용하는 업무 중에 없는 날짜를 조회에서 SQL 에러가 발생했던 일이 있었다. 하여 오늘은 이에 대한 내용을 정리하려 한다. Oracle에서 날짜 연산하기 INTERVAL 로 이전 달 출력하기 ( YYYYMM 포맷 ) SELECT TO_CHAR(SYSDATE - (INTERVAL '1' MONTH),'YYYYMM') FROM DUAL; -- ORA-01839 에러 발생 SELECT TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,'YYYYMM'),'YYYYMM') - (INTERVAL '1' MONTH),'YYYYMM') FROM DUAL; -- 202304 위에서 에러가 발생하는 이유는 다음과 같다. 현재 날짜는 5월 31일이고 1 Month를 빼면 4월 31을 찾게되며 없는 날짜를 ..

SQL

[Oracle/MySQL] NVL과 IFNULL, COALESCE로 널 값 처리하기

널 값인 경우에 null을 그대로 출력할 수는 없으니 다른 값으로 출력하기 위한 함수가 존재하는데, 오늘은 그에 대해서 정리를 해보려 한다. 밑에 DEPARTMENT 테이블을 이용해 알아보자. deptno name location 1 Finance New York 2 Development - 현재, deptno=2이고 name='Development'인 데이터의 location이 널값이다. Oracle에서 널 값 처리하기 오라클에서는 NVL을 통해 널값을 처리할 수도 있고, 값이 있는 경우 원하는 값으로 대체하여 출력할 수도 있다. NVL(column명, 'null일 때 출력값') 로 널 값 처리하기 SELECT name,location,NVL(location,'none') FROM departments..

limnj
'mysql' 태그의 글 목록