SQL

SQL_ DATETIME에서 DATE로 형 변환

밍망몽멍뭉 2021. 3. 8. 22:56

DATE_FORMAT 함수 쓰는 것!!

 

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAMETYPENULLABLE

ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜1를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회해야 합니다.

예시

예를 들어, ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_INS

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE

A349996 Cat 2018-01-22 14:32:00 Normal Sugar Neutered Male
A350276 Cat 2017-08-13 13:50:00 Normal Jewel Spayed Female
A350375 Cat 2017-03-06 15:01:00 Normal Meo Neutered Male
A352555 Dog 2014-08-08 04:20:00 Normal Harley Spayed Female
A352713 Cat 2017-04-13 16:29:00 Normal Gia Spayed Female

SQL문을 실행하면 다음과 같이 나와야 합니다.

ANIMAL_IDNAME날짜

A349996 Sugar 2018-01-22
A350276 Jewel 2017-08-13
A350375 Meo 2017-03-06
A352555 Harley 2014-08-08
A352713 Gia 2017-04-13

 

 

 

내풀이는!!

SELECT ANIMAL_ID , NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

참고한 것!!

tcpschool.com/mysql/mysql_builtInFunction_dateTime

더보기

날짜와 시간 함수

현재 날짜와 시간 정보

NOW() 함수는 현재 날짜와 시간을 반환합니다.

이때 반환되는 값은 'YYYY-MM-DD HH:MM:SS' 또는 YYYYMMDDHHMMSS 형태로 반환됩니다.

 

CURDATE() 함수는 현재 날짜를 반환합니다.

이때 반환되는 값은 'YYYY-MM-DD' 또는 YYYYMMDD 형태로 반환됩니다.

 

CURTIME() 함수는 현재 시각을 반환합니다.

이때 반환되는 값은 'HH:MM:SS' 또는 HHMMSS 형태로 반환됩니다.

 


특정 날짜와 시간 정보

DATE() 함수는 전달받은 값에 해당하는 날짜 정보를 반환합니다.

MONTH() 함수는 전달받은 값에서 월에 해당하는 값만을 반환하며, 0부터 12 사이의 값을 가집니다.

DAY() 함수는 전달받은 값에서 일자에 해당하는 값만을 반환하며, 0부터 31 사이의 값을 가집니다.

 

HOUR() 함수는 전달받은 값에서 시간에 해당하는 값만을 반환하며, 0부터 23 사이의 값을 가집니다.

MINUTE() 함수는 전달받은 값에서 분에 해당하는 값만을 반환하며, 0부터 59 사이의 값을 가집니다.

SECOND() 함수는 전달받은 값에서 초에 해당하는 값만을 반환하며, 0부터 59 사이의 값을 가집니다.

 

예제

SELECT DATE('2016-02-19 12:34:56'), 

MONTH('2016-01-02 12:34:56'), 

DAY('2016-01-02 12:34:56'), 

HOUR('12:34:56'), 

MINUTE('12:34:56'), 

SECOND('12:34:56');

 

 

실행 결과

2016-02-19

2

19

12

34

56


요일과 월 이름

MONTHNAME() 함수는 전달받은 값의 월에 해당하는 이름을 반환합니다.

DAYNAME() 함수는 전달받은 값의 요일에 해당하는 이름을 반환합니다.

예제

 

SELECT MONTHNAME('2017-02-19'), 

DAYNAME('2017-02-19');

 

 

실행 결과

February

Sunday


연도별, 월별, 주별 일수

DAYOFWEEK() 함수는 전달받은 값의 일자가 해당 주에서 몇 번째 날인지를 반환합니다.

이 함수는 1부터 7 사이의 값을 반환합니다. (일요일 = 1, 토요일 = 7)

 

DAYOFMONTH() 함수는 전달받은 값의 일자가 해당 월에서 몇 번째 날인지를 반환합니다.

이 함수는 0부터 31 사이의 값을 반환합니다.

 

DAYOFYEAR() 함수는 전달받은 값의 일자가 해당 연도에서 몇 번째 날인지를 반환합니다.

이 함수는 1부터 366 사이의 값을 반환합니다.

예제

SELECT DAYOFMONTH('2017-02-19'), 

DAYOFWEEK('2017-02-19'), 

DAYOFYEAR('2017-02-19');

 

실행 결과

1

19

50


날짜와 시간의 형식화

DATE_FORMAT() 함수는 전달받은 형식에 맞춰 날짜와 시간 정보를 문자열로 반환합니다.

 

DATE_FORMAT() 함수에 인수로 전달할 수 있는 날짜와 시간 표현의 형식은 다음과 같습니다.

형태설명예시

%a 요일을 세 개의 문자로 표현함. Sun부터 Sat
%b 월의 축약형을 세 개의 문자로 표현함. Jan부터 Dec
%c 월을 숫자로 표현함. 0부터 12
%D 날짜 뒤에 영어 서수를 붙임 0th, 1st, 2nd, 3rd, ...
%d 날짜를 두 자리 숫자로 표현함. 00부터 31
%e 날짜를 숫자로 표현함. 0부터 31
%f 마이크로초를 여섯 자리 숫자로 표현함. 000000에서 999999
%H 24시간 형식 시간을 두 자리 숫자로 표현함. 00부터 23
%h 12시간 형식 시간을 두 자리 숫자로 표현함. 01부터 12
%I 12시간 형식 시간을 두 자리 숫자로 표현함. 01부터 12
%i 분을 두 자리 숫자로 표현함. 00부터 59
%j 일 년 중 몇 번째 날인지를 세 자리 숫자로 표현함. 001부터 366
%k 24시간 형식으로 시간을 표현함. 0부터 23
%l 12시간 형식으로 시간을 표현함. 1부터 12
%M 월을 완전한 문자열로 표현함. January부터 December
%m 월을 두 자리 숫자로 표현함. 00부터 12
%p

오전과 오후의 대문자를 표현함.

AM 또는 PM
%r hh:mm:ss AM/PM 형식으로 시간을 표현함. (12시간 형식) 00:00:01 AM
%S 초를 두 자리 숫자로 표현함. 00부터 59
%s 초를 두 자리 숫자로 표현함. 00부터 59
%T hh:mm:ss 형식으로 시간을 표현함. (24시간 형식) 23:01:01
%U 일 년 중 몇 번째 주인지를 숫자로 표현함. (한 주는 일요일부터 시작함) 00부터 53
%u 일 년 중 몇 번째 주인지를 숫자로 표현함. (한 주는 월요일부터 시작함) 00부터 53
%V

일 년 중 몇 번째 주인지를 숫자로 표현함.

(한 주는 일요일부터 시작하고, %X 형식을 사용함)

00부터 53
%v

일 년 중 몇 번째 주인지를 숫자로 표현함.

(한 주는 월요일부터 시작하고, %x 형식을 사용함)

00부터 53
%W 요일을 완전한 문자열로 표현함. Sunday부터 Saturday
%w 요일을 숫자로 표현함. 0(일요일)부터 6(토요일)
%X

연도를 완전한 네 자리 숫자로 표현함.

(한 주는 일요일부터 시작하고, %V 형식을 사용함)

1999나 2003
%x

연도를 완전한 네 자리 숫자로 표현함.

(한 주는 월요일부터 시작하고, %v 형식을 사용함)

1999나 2003
%Y 연도를 완전한 네 자리 숫자로 표현함. 1999나 2003
%y 연도를 두 자리 숫자로 표현함. 99나 03
%% '%' 문자 %

 

예제

 

SELECT DATE_FORMAT('2017-02-19 12:34:56', '%D %y %a %d %m %b %j');

 

 

실행 결과

19th 17 Sun 19 02 Feb 050