source

MariaDB 30일 이내에 만료되는 계정의 모든 레코드를 선택합니다.

nicesource 2022. 10. 25. 17:40
반응형

MariaDB 30일 이내에 만료되는 계정의 모든 레코드를 선택합니다.

어떻게 해야 하나요? SELECTMariaDB를 사용한 레코드의 어카운트가 30일 이내에 만료되도록 설정되어 있는 경우max()유통기한?

주의사항: 오늘이 2017년 12월 7일이고 계정 "a"의 최대 만료일이 2018년 6월 1일 미만인 경우 원하는 계정 "a"에 대한 기록은 절대 반환되지 않습니다.SELECT테이블에도 오늘 날짜보다 오래된 계정 "a" 행이 포함되어 있는지 여부에 관계없이 쿼리합니다.

선택해야 할 항목: 계정 "b"에는 2개의 레코드가 있으며, 이 레코드는max()레코드는 30일 미만입니다.행id4는 원하는 행에서 반환되는 입니다.SELECT문의합니다.

+----+---------+------------+
| id | account | expiration |
+----+---------+------------+
| 1  | a       | 2017-01-01 |
| 2  | a       | 2018-06-01 |
| 3  | b       | 2017-01-01 |
| 4  | b       | 2018-01-01 |
+----+---------+------------+

가장 엄격한 테스트는 결국 실패했지만, 저는 이것에 다양한 측면에서 시간을 할애했습니다.내가 하고 있는 일의 한 가지는 다음과 같다.

SELECT DATEDIFF(STR_TO_DATE(expiration, '%Y-%m-%d'),CURDATE()) AS days_left FROM table;
  1. 당신은 이미 당신이 원하는 것을 알아챘다.MAX.
  2. 너는 원한다MAX어카운트 단위로 환산하면GROUP BY accountSQL에 있습니다.
  3. 특정 계정만 보여주려고 합니다. 즉,MAX특정 날짜 범위 내에 있습니다.집계에 관한 기준은HAVING절을 클릭합니다.

이 때문에,

select account
from mytable
group by account
having max(expiration) between current_date and current_date + interval 30 day;

언급URL : https://stackoverflow.com/questions/47750595/mariadb-select-all-records-for-only-accounts-expiring-within-30-days

반응형