WEEK 3 WEN DATEDIFF(date1,date2), DATE_ADD/SUB
MySQL :: MySQL 5.7 Reference Manual :: 12.7 Date and Time Functions
12.7 Date and Time Functions This section describes the functions that can be used to manipulate temporal values. See Section 11.2, “Date and Time Data Types”, for a description of the range of values each date and time type has and the valid formats
dev.mysql.com
1. DATEDIFF(date1,date2) 는 date1 - date2를 하여 일 수 값으로 반환하는 함수이다. 따라서 조건이 30일 이내라면 함수에 < 30 을 걸어주면 된다.
아래와 같이 마지막 날은 알지만 30일 전을 모르는 상황이라면 DATEDIFF(마지막 날짜, 날짜column) <30으로 사용하여 필요한 날짜만 추출할 수 있다. 이때 DATEDIFF(마지막 날짜, 날짜column) <30> =0을 같이 사용해 주는 것이 중요한데, 아니라면 음수차이로도 추출되기 때문이다.
DATEDIFF('2019-07-27', activity_date)<30
AND
DATEDIFF('2019-07-27', activity_date)>=0
2. BETWEEN을 사용하여 조건을 지정해 줄 수 있다. 이때 중요한 점은 30일 이내면 최대값을 29일로 지정해주어야 한다는 것이다.
DATEDIFF('2019-07-27', activity_date) BETWEEN 0 AND 29
3. DATE_ADD(기준 날짜/시간, INTERVAL 숫자 구분)나 DATE_SUB( 기준 날짜/시간, INTERVAL )함수를 통해 날짜를 더하고 뺄 수 있다. 구분의 자리에는 YEAR, MONTH, DAY, HOUR, NINUTE, SECOND가 올 수 있고 기준날짜에서 해당 숫자 만큼 더하거나 뺀 값을 반환한다. 날짜를 직접 더하거나 뺄 수 없는 구문에서 날짜를 계산할 때 사용하면 좋다.
activity_date BETWEEN date_sub('2019-07-27', INTERVAL 29 DAY)
AND '2019-07-27'