MySQL에서 날짜와 시간을 효과적으로 사용하는 방법

MySQL에서 날짜와 시간을 효과적으로 사용하는 방법

날짜와 시간은 중요하고 일을 정리하는 데 도움이 되며 모든 소프트웨어 작업의 필수적인 측면입니다.



데이터베이스 내에서 효율적으로 작업하는 것은 다양한 시간대에서 작동하는지, 날짜 추가/빼기 및 기타 작업에 관계없이 때때로 혼란스러워 보일 수 있습니다.

데이터베이스 내에서 날짜/시간을 쉽게 처리하고 관리하는 데 사용할 수 있는 다양한 MySQL 기능을 알아봅니다.





시간대 작업

표준화된 상태를 유지하려면 UTC 시간대의 날짜/시간으로만 작업해야 합니다. MySQL 데이터베이스에 연결할 때마다 시간대를 UTC로 전환해야 합니다. 이 작업은 다음 SQL 문으로 수행할 수 있습니다.

SET TIME_ZONE = '+0:00'

이제 모든 날짜가 UTC로 저장되므로 작업 중인 내용을 항상 알 수 있으므로 작업이 더 단순하고 간단해집니다.



디지털 오디오 spdif 소리 없음 윈도우 10

필요할 때 쉽게 시간대를 변환 편리한 날짜 시간 / 타임 스탬프 값 CONVERT_TZ() MySQL 기능. 먼저 오프셋을 알아야 합니다. 예를 들어 북미 서부 해안의 PST는 UTC -08:00이므로 다음을 사용할 수 있습니다.

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

그 결과 2021-02-04 13:47:23 정확히 맞습니다. 에 전달된 세 가지 인수 CONVERT_TZ() 첫 번째는 시작하는 날짜/시간소인이고(현재 시간에는 now() 사용) 두 번째는 항상 '+0: 00' 모든 날짜는 데이터베이스에서 UTC로 강제 적용되고 마지막은 날짜를 변환하려는 오프셋입니다.

날짜 추가/빼기

일주일 전의 레코드를 검색해야 하거나 지금 한 달 후 일정을 예약해야 하는 경우와 같이 날짜에 더하거나 빼야 하는 경우가 많습니다.

고맙게도 MySQL은 DATE_ADD() 그리고 DATE_SUB () 이 작업을 매우 쉽게 만드는 기능. 예를 들어, SQL 문을 사용하여 현재 날짜에서 2주를 뺄 수 있습니다.

SELECT DATE_SUB(now(), interval 2 week);

대신 기존 타임스탬프에 3일을 추가하려면 다음을 사용합니다.

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

두 함수 모두 동일하게 작동하며 첫 번째 인수는 시작하는 타임스탬프이고 두 번째 인수는 더하거나 뺄 간격입니다. 두 번째 인수는 항상 다음 단어로 시작하는 동일한 형식입니다. 간격 그 뒤에 숫자 값과 간격 자체가 옵니다. 초, 분, 시, 일, 주, 월, 분기, 연도 중 하나일 수 있습니다.

다른 예로, 지난 34분 동안 발생한 모든 로그인을 검색하려면 다음과 같은 SQL 문을 사용할 수 있습니다.

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

보시다시피, 이것은 모든 레코드를 검색합니다. 로그인 로그인 날짜가 현재 시간에서 45분을 뺀 것, 즉 지난 45분보다 큰 테이블.

날짜 간의 차이 가져오기

때로는 두 날짜 사이에 얼마나 많은 시간이 경과했는지 알아야 합니다. 다음을 사용하여 두 개의 다른 날짜 사이의 일 수를 쉽게 얻을 수 있습니다. DATEDIFF 아래 SQL 문과 같은 함수:

SELECT DATEDIFF(now(), '2020-12-15');

NS DATEDIFF 함수는 두 개의 인수를 취합니다. 둘 다 날짜/시간 스탬프이며 그 사이의 일 수를 제공합니다. 위의 예는 2020년 12월 15일부터 오늘까지 경과된 일 수를 보여줍니다.

두 날짜 사이의 초 수를 얻으려면 TO_SECONDS() 예를 들어 다음과 같은 기능이 유용할 수 있습니다.

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

이렇게 하면 제공된 두 날짜 사이의 시간(초)이 표시됩니다.

날짜에서 세그먼트 추출

월, 일 또는 시간만 원하는 경우와 같이 날짜에서 특정 세그먼트를 쉽게 추출할 수 있는 다양한 MySQL 기능이 있습니다. 다음은 이러한 기능의 몇 가지 예입니다.

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

위의 SQL 문은 02 , 현재 시간 및 196 9월 15일은 올해의 196번째 날이기 때문입니다. 다음은 사용 가능한 모든 날짜 추출 기능 목록이며, 각각은 하나의 인수만 사용하며 날짜는 다음에서 추출됩니다.

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

예를 들어 모든 사용자가 생성된 월과 연도만 검색하려는 경우 다음과 같은 SQL 문을 사용할 수 있습니다.

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

이렇게 하면 사용자 테이블에 각 사용자가 생성된 id#, 월 및 연도를 표시합니다.

날짜 기간별로 레코드 그룹화

날짜 함수를 잘 사용하는 것 중 하나는 다음을 사용하여 날짜 기간별로 레코드를 그룹화하는 기능입니다. 그룹화 기준 당신의 SQL 문 내에서. 예를 들어, 2020년의 모든 주문 총액을 월별로 그룹화하려고 할 수 있습니다. 다음과 같은 SQL 문을 사용할 수 있습니다.

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

이렇게 하면 2020년에 이루어진 모든 주문을 검색하고 생성된 월별로 그룹화하고 해당 연도의 각 월에 주문한 총 금액을 보여주는 12개의 레코드를 반환합니다.

더 나은 인덱스 성능을 위해 항상 다음과 같은 날짜 함수를 사용하지 않는 것이 가장 좋습니다. 년도() SQL 문의 WHERE 절 내에서 대신 사용 사이 위의 예와 같이 연산자.

다시는 날짜와 혼동하지 마십시오

위의 지식을 사용하여 이제 다양한 사용 사례에서 날짜와 시간에 효율적으로 작업하고 번역하고 작업을 수행할 수 있습니다.

단순 계산을 위해 날짜 작업을 할 때 항상 UTC를 사용하고 위의 팁을 활용하여 간단한 계산을 완료하거나 날짜 기간별로 그룹화된 보고서를 쉽게 가져오기 위해 소프트웨어 내에서 날짜를 효율적으로 관리하십시오.

SQL을 처음 접하는 경우 다음을 확인하십시오. 필수 SQL 명령 SQL 사용을 개선하는 데 도움이 됩니다.

공유하다 공유하다 트위터 이메일 Microsoft Word에서 전문 보고서 및 문서를 만드는 방법

이 가이드는 전문 보고서의 요소를 검토하고 Microsoft Word에서 문서의 구조화, 스타일 지정 및 마무리를 검토합니다.

다음 읽기
관련 항목 저자 소개 매트 디작(18건의 기사 게재) 매트 디작이 참여한 작품 더보기

뉴스레터 구독

기술 팁, 리뷰, 무료 전자책 및 독점 거래에 대한 뉴스레터에 가입하십시오!

구독하려면 여기를 클릭하세요.