Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 모든 날짜 레코드의 다가오는 일요일 날짜 구하는 방법

MySQL에서 특정 날짜 컬럼에 저장된 모든 레코드에 대해 다가오는 일요일(Coming Sunday)의 날짜를 계산하는 방법을 알아보겠습니다. 이 작업은 WEEKDAY() 함수와 INTERVAL 연산을 조합하면 간단하게 처리할 수 있습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable(GetSundayDate date);
Query OK, 0 rows affected (0.44 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 날짜 데이터를 몇 개 삽입합니다.

mysql> insert into DemoTable values('2019-08-07');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2018-09-05');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('2019-09-12');
Query OK, 1 row affected (0.17 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+---------------+
| GetSundayDate |
+---------------+
| 2019-08-07 |
| 2018-09-05 |
| 2019-09-12 |
+---------------+
3 rows in set (0.00 sec)

4. 다가오는 일요일 날짜 계산하기

컬럼의 모든 날짜에 대해 다가오는 일요일 날짜를 구하는 쿼리는 다음과 같습니다.

mysql> SELECT date(GetSundayDate + INTERVAL 6 - weekday(GetSundayDate) DAY) AS ComingSundayDate from DemoTable;

실행 결과는 다음과 같습니다.

+------------------+
| ComingSundayDate |
+------------------+
| 2019-08-11 |
| 2018-09-09 |
| 2019-09-15 |
+------------------+
3 rows in set (0.00 sec)

쿼리 동작 원리

이 쿼리가 어떻게 동작하는지 살펴보겠습니다.

  • MySQL의 WEEKDAY() 함수는 월요일을 0으로 반환하고, 화요일은 1, ... 일요일은 6을 반환합니다.
  • 따라서 6 - WEEKDAY(날짜)를 계산하면 해당 날짜부터 다가오는 일요일까지 남은 일수가 됩니다.
  • 예를 들어 2019-08-07은 수요일(WEEKDAY 값 2)이므로, 6 - 2 = 4일 후인 2019-08-11이 다가오는 일요일이 됩니다.
  • 마지막으로 DATE() 함수를 사용해 결과를 날짜 형식으로 변환하여 깔끔하게 출력합니다.

이처럼 WEEKDAY() 함수와 INTERVAL 연산만 활용하면 별도의 복잡한 로직 없이도 모든 날짜 레코드에 대해 다가오는 일요일 날짜를 손쉽게 구할 수 있습니다.