hyperskill - Date & Time data types - 원문
SQL은 테이블에서 조직화 된 서로다른 데이터 타입들을 작업합니다.
당신은 숫자, 문자열, 논리 데이터를 저장할 수 있게 허용 해 주는 기초적인 데이터 타입들에 대해 알고 있습니다.
우리가 매일 마주하는 또다른 것이 있습니다.
당신이 일어나서 처음으로 하는 것을 생각 해 보세요. - 네, 시간을 확인합니다.
우리는 날짜와 시간 데이터를 정기적으로 마주하므로, 왜 우리의 작업에 이를 적용하는 법을 배우지 않는거죠?
SQL은 다양한 날짜, 시간 타입을 제공합니다.
이제 이것들을 봅시다!
Date & Time types - 날짜와 시간 타입
서로 다른 SQL 용어들 속에서, 날짜와 시간 타입은 다를 겁니다.
하지만 여기에 가장 공통적인 것들에 대해 말할 겁니다. :
DATE
, TIME
, DATETIME
, TIMESTAMP
, INTERVAL
우리는 이러한 타입들에 대해 MySQL 구현을 따르므로,
다른 SQL 관리 시스템 구문을 위한, 다른 타입과 서로 다른 데이터 길이를 볼 수 있습니다.
DATE
타입은 YYYY-MM-DD
형식에서 연도, 월, 일을 구성하는 날짜를 저장하는 데 사용됩니다.
당신은 '1996-11-06'
, '2020-12-31'
같은 날짜들을 저장하는 데 사용 할 수 있습니다.
이 타입은 어떠한 날짜도 지원하는데, '1000-01-01'
에서 '9999-12-31'
까지 지원합니다.
만약 당신이 날짜 없이 시간만 저장하고 싶다면, TIME
타입을 사용할 수 있습니다.
TIME
타입은 hh:mm:ss
형식에서 시간, 분, 초 를 저장합니다.
이를 어떤 날의 시간을 저장하거나, 두 날짜 간의 간격을 표현하는 시간을 저장하는 데 사용 될 수 있습니다.
두 날짜 간격의 시간을 저장할 수 있는 이유는, 해당 타입의 지원 범위가
'-838:59:59'
에서 '838:59:59'
로, 매우 넓기 때문입니다.
따라서, MySQL 에서는 '00:00:00'
, '-455:34:34'
둘 다 TIME 타입으로 적합합니다.
당신은 TIME 값을 '54:45'
처럼 사용 할 수 있는데, 이를 조심하세요 :
이 값은 MySQL에 의해 '00:54:45'
가 아닌, '54:45:00'
으로 해석됩니다.
DATETIME
타입은 'YYYY-MM-DD hh:mm:ss' 형식으로 날짜, 시간 둘 다 저장합니다.
해당 타입은 '1000-01-01 00:00:00'
에서 '9999-12-31 23:59:59'
범위 까지 지원합니다.
TIMESTAMP
은 다른 타입으로 MySQL 에서 날짜, 시간 둘 다 저장하는 데 사용되지만, 범위는 더 좁습니다.
TIMESTAMP
타입의 범위는
'1970-01-01 00:00:01'
UTC 부터 '2038-01-19 03:14:07'
UTC 까지입니다.
다른 흥미로운 시간 저장 데이터 타입은 INTERVAL
입니다.
당신은 두 날짜 간의 간격을 저장하기 위해 이를 사용 할 수 있습니다.
여기 INTERVAL
의 두 가지 클래스가 있습니다 :
INTERVAL YEAR TO MONTH
, INTERVAL DAY TO SECOND
첫 번째는 연도, 월 내에서 두 날짜 간의 차이를 저장하는 데 사용됩니다.
반면에 두 번째는 당신이 몇 일, 시간, 분, 초의 다름을 저장할 필요가 있을 때 유용 할 겁니다.
당신은 이 날짜 타입을 볼 수 있는데, 예를 들면 Oracle DBMS가 있습니다.
Current date & time - 최신 날짜 & 시간
꽤 자주, 우리가 데이터를 작업 할 때, 우리의 작업에서 최신 날짜와 시간을 사용 할 필요가 있습니다.
이러한 목적을 위해서, MySQL은 시간, 날짜 둘 다 얻을 수 있게 허용 해 주는 몇몇 기능을 제공합니다.
최근 날짜를 얻기 위해서, 우리는 CURDATE()
혹은 CURRENT_DATE()
기능을 사용 할 수 있습니다.
이러한 두 기능들은 완전히 동일합니다.
최신 날짜를 선택하기 위해서, 매우 간단한 쿼리를 사용 할 수 있습니다 :
SELECT CURDATE();
이와 비슷하게, 최신 시간을 얻기 위해 CURRENT_TIME()
혹은 CURTIME()
기능을 사용 할 수 있습니다.
최신 시간을 선택하기 위해서, 우리는 밑의 기능을 사용 할 수 있습니다 :
SELECT CURTIME();
날짜와 시간 둘 다 선택하기 위해서, CURRENT_TIMESTAMP()
기능을 적용하세요.
SELECT CURRENT_TIMESTAMP();
Date & time difference - 날짜 혹은 시간 차이
만약 두 날짜 사이의 차이를 얻고 싶다면, DATEDIFF(first_date, second_date)
기능을 사용 할 수 있습니다.
MySQL 구문에서는, DATEDIFF()
기능은 두 날짜 사이의 날의 수를 반환합니다.
하지만, 몇몇 다른 SQL DBMS 에서는, 날짜 차이를 얻고자 하는 유닛을 지정 할 수 있습니다. :
year, month, second, 등등..
예를 들어, MySQL 에서의 밑의 쿼리는 결과로 5 를 반환합니다.
SELECT DATEDIFF('2020-05-15 09:34:34', '2020-05-10 15:34:43');
조심하세요! 만약 첫 번째 날짜가 두 번째 날짜보다 작다면 쿼리의 실행 결과로 음수를 얻게 됩니다.
MySQL 에서는, 두 TIME 값의 차이를 얻기 위해 TIMEDIFF(first_name, second_name)
기능을 사용 할 수 있습니다.
Parts of dates - 날짜의 일부
날짜의 일부분을 얻기 위해, EXTRACT(unit FROM date)
기능을 사용할 수 있는데,
주어진 날짜(date) 에서 지정된 조각(unit) 을 추출(EXTRACT) 합니다.
밑의 쿼리는 주어진 날짜에서 "월" 을 추출하고, 결과로서 11을 반환 할 겁니다 :
SELECT EXTRACT(MONTH FROM '2020-11-04');
Adding and subtracting dates - 날짜 더하기 빼기
당신은 날짜를 더하거나 뺄 수도 있는데,
DATE_ADD(date, INTERVAL value_of_interval units)
: 더하기DATE_SUB(date, INTERVAL value_of_interval units)
: 빼기
이렇게 각기, 기능들을 사용 할 수 있습니다.
최신 날짜에서 10 일을 더하는데, DATE_ADD
기능을 사용합니다 :
SELECT DATE_ADD(CURDATE(), INTERVAL 10 DAY);
이 쿼리는 오늘로부터 10 일이 더해진 날짜를 반환 할 겁니다.
예를 들어, 오늘이 2020년 12월 14일이라면, 쿼리는 2020년 12월 24일을 반환합니다.
날짜를 더하는 기능을 가진 ADDATE
라 불리는 함수도 있습니다 :
첫 번째는 현재 날짜를 받으며, 두 번째는 오직 몇 일 인지 만 선언 할 수 있습니다:
SELECT ADDDATE(CURDATE(), 10);
날짜를 빼는 작업은 비슷합니다.
'1996-11-30'에서 2년을 빼 봅시다. :
SELECT DATE_SUB('1996-11-30', INTERVAL 2 YEAR);
쿼리의 결과로, 우리는 '1994-11-30'을 얻게 됩니다.
Time zone support - 시간대 지원
전 세계에는 수많은 time zone이 있으므로, 가끔 날짜와 시간 값의 시간대를 바꿀 필요가 있습니다.
MySQL에서는, 날짜를 다른 시간대로 변경하기 위해서,
CONVERT_TZ(value, from_time_zone, to_time_zone)
을 사용 할 수 있습니다.
시간대로 이름이 있는 시간대인 Europe/Helsinki, UTC 와 같은 시간대를 사용하거나,
'-12:59'
에서 '+13:00'
범위를 포함한 오프셋을 사용 할 수도 있습니다.
'SYSTEM'
키워드를 사용하여 시스템의 타임 존을 사용 할 수도 있습니다.
예를 들어, 밑의 쿼리는 주어진 날짜를 바꾸며, 시간을 UTC 에서 US/Eastern 시간대로 변경합니다.
SELECT CONVERT_TZ('2008-05-15 12:00:00', 'UTC', 'US/Eastern');
또한 세션마다 타임 존을 설정 할 수 있는데, 밑의 쿼리를 따라하면 됩니다 :
SET time_zone = timezone;
Conclusion - 결론
이번 주제에서는 일시적인 값을 표현하기 위한 가장 평범한 타입과 유용한 기능들을 배웠는데,
이는 당신이 데이터를 작업하는 동안 적용 할 수 있습니다.
특정한 SQL 관리 시스템을 위한 서로 다른 날짜 & 시간 기능, 날짜 & 시간 타입이 정말 많습니다.
하지만, 이 주제의 대부분의 SQL 예제와 비슷한 기능들을 볼 수 있습니다.
자, 이제 연습 해 봅시다!
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introducing to SQL' 카테고리의 다른 글
Set operations - 집합 연산자들 (1) | 2024.05.01 |
---|---|
Consistency constraints - 일관성 제약 조건 (0) | 2024.04.30 |
Subqueries - 서브쿼리 (0) | 2024.04.29 |
GROUP BY statement - GROUP BY 문법 (0) | 2024.04.28 |
Aggregate functions - 집계 함수들 (0) | 2024.04.27 |
hyperskill - Date & Time data types - 원문
SQL은 테이블에서 조직화 된 서로다른 데이터 타입들을 작업합니다.
당신은 숫자, 문자열, 논리 데이터를 저장할 수 있게 허용 해 주는 기초적인 데이터 타입들에 대해 알고 있습니다.
우리가 매일 마주하는 또다른 것이 있습니다.
당신이 일어나서 처음으로 하는 것을 생각 해 보세요. - 네, 시간을 확인합니다.
우리는 날짜와 시간 데이터를 정기적으로 마주하므로, 왜 우리의 작업에 이를 적용하는 법을 배우지 않는거죠?
SQL은 다양한 날짜, 시간 타입을 제공합니다.
이제 이것들을 봅시다!
Date & Time types - 날짜와 시간 타입
서로 다른 SQL 용어들 속에서, 날짜와 시간 타입은 다를 겁니다.
하지만 여기에 가장 공통적인 것들에 대해 말할 겁니다. :
DATE
, TIME
, DATETIME
, TIMESTAMP
, INTERVAL
우리는 이러한 타입들에 대해 MySQL 구현을 따르므로,
다른 SQL 관리 시스템 구문을 위한, 다른 타입과 서로 다른 데이터 길이를 볼 수 있습니다.
DATE
타입은 YYYY-MM-DD
형식에서 연도, 월, 일을 구성하는 날짜를 저장하는 데 사용됩니다.
당신은 '1996-11-06'
, '2020-12-31'
같은 날짜들을 저장하는 데 사용 할 수 있습니다.
이 타입은 어떠한 날짜도 지원하는데, '1000-01-01'
에서 '9999-12-31'
까지 지원합니다.
만약 당신이 날짜 없이 시간만 저장하고 싶다면, TIME
타입을 사용할 수 있습니다.
TIME
타입은 hh:mm:ss
형식에서 시간, 분, 초 를 저장합니다.
이를 어떤 날의 시간을 저장하거나, 두 날짜 간의 간격을 표현하는 시간을 저장하는 데 사용 될 수 있습니다.
두 날짜 간격의 시간을 저장할 수 있는 이유는, 해당 타입의 지원 범위가
'-838:59:59'
에서 '838:59:59'
로, 매우 넓기 때문입니다.
따라서, MySQL 에서는 '00:00:00'
, '-455:34:34'
둘 다 TIME 타입으로 적합합니다.
당신은 TIME 값을 '54:45'
처럼 사용 할 수 있는데, 이를 조심하세요 :
이 값은 MySQL에 의해 '00:54:45'
가 아닌, '54:45:00'
으로 해석됩니다.
DATETIME
타입은 'YYYY-MM-DD hh:mm:ss' 형식으로 날짜, 시간 둘 다 저장합니다.
해당 타입은 '1000-01-01 00:00:00'
에서 '9999-12-31 23:59:59'
범위 까지 지원합니다.
TIMESTAMP
은 다른 타입으로 MySQL 에서 날짜, 시간 둘 다 저장하는 데 사용되지만, 범위는 더 좁습니다.
TIMESTAMP
타입의 범위는
'1970-01-01 00:00:01'
UTC 부터 '2038-01-19 03:14:07'
UTC 까지입니다.
다른 흥미로운 시간 저장 데이터 타입은 INTERVAL
입니다.
당신은 두 날짜 간의 간격을 저장하기 위해 이를 사용 할 수 있습니다.
여기 INTERVAL
의 두 가지 클래스가 있습니다 :
INTERVAL YEAR TO MONTH
, INTERVAL DAY TO SECOND
첫 번째는 연도, 월 내에서 두 날짜 간의 차이를 저장하는 데 사용됩니다.
반면에 두 번째는 당신이 몇 일, 시간, 분, 초의 다름을 저장할 필요가 있을 때 유용 할 겁니다.
당신은 이 날짜 타입을 볼 수 있는데, 예를 들면 Oracle DBMS가 있습니다.
Current date & time - 최신 날짜 & 시간
꽤 자주, 우리가 데이터를 작업 할 때, 우리의 작업에서 최신 날짜와 시간을 사용 할 필요가 있습니다.
이러한 목적을 위해서, MySQL은 시간, 날짜 둘 다 얻을 수 있게 허용 해 주는 몇몇 기능을 제공합니다.
최근 날짜를 얻기 위해서, 우리는 CURDATE()
혹은 CURRENT_DATE()
기능을 사용 할 수 있습니다.
이러한 두 기능들은 완전히 동일합니다.
최신 날짜를 선택하기 위해서, 매우 간단한 쿼리를 사용 할 수 있습니다 :
SELECT CURDATE();
이와 비슷하게, 최신 시간을 얻기 위해 CURRENT_TIME()
혹은 CURTIME()
기능을 사용 할 수 있습니다.
최신 시간을 선택하기 위해서, 우리는 밑의 기능을 사용 할 수 있습니다 :
SELECT CURTIME();
날짜와 시간 둘 다 선택하기 위해서, CURRENT_TIMESTAMP()
기능을 적용하세요.
SELECT CURRENT_TIMESTAMP();
Date & time difference - 날짜 혹은 시간 차이
만약 두 날짜 사이의 차이를 얻고 싶다면, DATEDIFF(first_date, second_date)
기능을 사용 할 수 있습니다.
MySQL 구문에서는, DATEDIFF()
기능은 두 날짜 사이의 날의 수를 반환합니다.
하지만, 몇몇 다른 SQL DBMS 에서는, 날짜 차이를 얻고자 하는 유닛을 지정 할 수 있습니다. :
year, month, second, 등등..
예를 들어, MySQL 에서의 밑의 쿼리는 결과로 5 를 반환합니다.
SELECT DATEDIFF('2020-05-15 09:34:34', '2020-05-10 15:34:43');
조심하세요! 만약 첫 번째 날짜가 두 번째 날짜보다 작다면 쿼리의 실행 결과로 음수를 얻게 됩니다.
MySQL 에서는, 두 TIME 값의 차이를 얻기 위해 TIMEDIFF(first_name, second_name)
기능을 사용 할 수 있습니다.
Parts of dates - 날짜의 일부
날짜의 일부분을 얻기 위해, EXTRACT(unit FROM date)
기능을 사용할 수 있는데,
주어진 날짜(date) 에서 지정된 조각(unit) 을 추출(EXTRACT) 합니다.
밑의 쿼리는 주어진 날짜에서 "월" 을 추출하고, 결과로서 11을 반환 할 겁니다 :
SELECT EXTRACT(MONTH FROM '2020-11-04');
Adding and subtracting dates - 날짜 더하기 빼기
당신은 날짜를 더하거나 뺄 수도 있는데,
DATE_ADD(date, INTERVAL value_of_interval units)
: 더하기DATE_SUB(date, INTERVAL value_of_interval units)
: 빼기
이렇게 각기, 기능들을 사용 할 수 있습니다.
최신 날짜에서 10 일을 더하는데, DATE_ADD
기능을 사용합니다 :
SELECT DATE_ADD(CURDATE(), INTERVAL 10 DAY);
이 쿼리는 오늘로부터 10 일이 더해진 날짜를 반환 할 겁니다.
예를 들어, 오늘이 2020년 12월 14일이라면, 쿼리는 2020년 12월 24일을 반환합니다.
날짜를 더하는 기능을 가진 ADDATE
라 불리는 함수도 있습니다 :
첫 번째는 현재 날짜를 받으며, 두 번째는 오직 몇 일 인지 만 선언 할 수 있습니다:
SELECT ADDDATE(CURDATE(), 10);
날짜를 빼는 작업은 비슷합니다.
'1996-11-30'에서 2년을 빼 봅시다. :
SELECT DATE_SUB('1996-11-30', INTERVAL 2 YEAR);
쿼리의 결과로, 우리는 '1994-11-30'을 얻게 됩니다.
Time zone support - 시간대 지원
전 세계에는 수많은 time zone이 있으므로, 가끔 날짜와 시간 값의 시간대를 바꿀 필요가 있습니다.
MySQL에서는, 날짜를 다른 시간대로 변경하기 위해서,
CONVERT_TZ(value, from_time_zone, to_time_zone)
을 사용 할 수 있습니다.
시간대로 이름이 있는 시간대인 Europe/Helsinki, UTC 와 같은 시간대를 사용하거나,
'-12:59'
에서 '+13:00'
범위를 포함한 오프셋을 사용 할 수도 있습니다.
'SYSTEM'
키워드를 사용하여 시스템의 타임 존을 사용 할 수도 있습니다.
예를 들어, 밑의 쿼리는 주어진 날짜를 바꾸며, 시간을 UTC 에서 US/Eastern 시간대로 변경합니다.
SELECT CONVERT_TZ('2008-05-15 12:00:00', 'UTC', 'US/Eastern');
또한 세션마다 타임 존을 설정 할 수 있는데, 밑의 쿼리를 따라하면 됩니다 :
SET time_zone = timezone;
Conclusion - 결론
이번 주제에서는 일시적인 값을 표현하기 위한 가장 평범한 타입과 유용한 기능들을 배웠는데,
이는 당신이 데이터를 작업하는 동안 적용 할 수 있습니다.
특정한 SQL 관리 시스템을 위한 서로 다른 날짜 & 시간 기능, 날짜 & 시간 타입이 정말 많습니다.
하지만, 이 주제의 대부분의 SQL 예제와 비슷한 기능들을 볼 수 있습니다.
자, 이제 연습 해 봅시다!
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introducing to SQL' 카테고리의 다른 글
Set operations - 집합 연산자들 (1) | 2024.05.01 |
---|---|
Consistency constraints - 일관성 제약 조건 (0) | 2024.04.30 |
Subqueries - 서브쿼리 (0) | 2024.04.29 |
GROUP BY statement - GROUP BY 문법 (0) | 2024.04.28 |
Aggregate functions - 집계 함수들 (0) | 2024.04.27 |