ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL] DATE 관련
    MySQL 2024. 9. 16. 20:40

    [DATE 타입]

     

    날짜는 포함하지만 시간은 포함하지 않음

    YYYY-MM-DD 형식만 가능함

     

    [DATETIME 타입]

    날짜와 시간을 모두 포함할때 사용

    YYYY-MM-DD HH:MM:SS 형식

     

    [TIME 타입]

    시간만 포함

    HH:MM:SS

     

    [TIMESTAMP 타입]

    날짜와 시간을 모두 포함

     

    [DATETIME vs TIMESTAMP]

     

    DATETIME은 문자형

    TIMESTAMP는 숫자형

     

    DATETIME은 8바이트

    TIMESTAMP는 4바이트

     

    DATETIME은 데이터값을 입력해주어야만 날짜가 입력됨

    TIMESTAMP는 데이터값 입력안해줘도 저장시에 자동으로 현재 날짜랑 시간이 입력됨

     


    [DATE_FORMAT : 날짜 포맷팅]

    // 2024-10-15 10:15:00
    // 위에꺼가 2024-10-15 이렇게 출력됨
    
    SELECT
        ANIMAL_ID,
        NAME,
        DATE_FORMAT(INTAKE_DATE,"%Y-%m-%d") AS '입양 날짜'
    
    FROM ANIMAL_INS
    ORDER BY ANIMAL_ID

     

    보통 많이 쓰는게 %Y %m %d

     

    %y 하면 끝년도 (21, 22 ,24, 25)

    %M 하면 달을 글자로 (January, August)

    %c 하면 달에서 0 빼줌 (1, 2, 4, 10)


    [DATEDIFF : 날짜 차이]

     
    두 DATE 간의 일수 차이 계산
    DATEDIFF(느린날짜, 빠른날짜)
    느린날짜 - 빠른날짜를 계산해줌

    SELECT ao.ANIMAL_ID, ao.NAME
    FROM ANIMAL_OUTS AS ao
    JOIN ANIMAL_INS AS ai
    ON ao.ANIMAL_ID = ai.ANIMAL_ID
    ORDER BY DATEDIFF(ao.DATETIME, ai.DATETIME) DESC
    LIMIT 2;

     
    https://school.programmers.co.kr/learn/courses/30/lessons/59411

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     


    [DATETIME을 DATE로 바꿔서 비교]

     

    날짜나 시간이 varchar로 저장되어있으면 = '2022-04-13' 처럼 할 수 있는데

    보통 date 형식으로 시간분초까지 저장되어있는 경우이면 저렇게 하면 에러남

     

    따라서 무조건 DATE()로 바꿔주고 = '2022-04-13' 비교연산 들어가자

    // column_name은 DATETIME, DATE, TIMESTAMP 타입
    // 반환값은 DATE 형임!
    // 하지만 출력될 때는 YYYY-MM-DD 형식의 문자열임!
    SELECT DATE(column_name)
    SELECT DATE('2022-06-11 12:34:56') = '2022-06-11'
    MONTH('2022-06-11 12:34:56') = '6'
    DAY('2022-06-11 12:34:56') = '11'
    SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
    CASE
        WHEN STATUS = 'DONE' THEN '거래완료'
        WHEN STATUS = 'RESERVED' THEN '예약중'
        ELSE '판매중'
    END AS STATUS
    
    FROM USED_GOODS_BOARD
    WHERE DATE(CREATED_DATE) = '2022-10-5'
    ORDER BY BOARD_ID DESC

     

     

    'MySQL' 카테고리의 다른 글

    [MySQL] WHERE IN 서브쿼리  (0) 2024.09.17
    [MySQL] 꿀팁 몇가지  (0) 2024.09.16
    [MySQL] STRING 관련  (0) 2024.09.16
    [MySQL] 쿼리 실행 순서  (1) 2024.09.16
    [MySQL] GROUP BY  (0) 2024.08.23