syntax:
DATE_ADD(날짜, INTERVAL 값 유닛)
DATE_SUB(날짜, INTERVAL 값 유닛)
ex:
SELECT DATE_ADD("2024-07-28", INTERVAL 10 DAY),
DATE_ADD("2017-06-15", INTERVAL 1 month),
DATE_SUB("2024-07-20", INTERVAL 2 DAY);
# 2024-08-07 2017-07-15
# find all data's ID with higher temperatures compared to its previous dates
SELECT id
FROM Weather w1
WHERE TEMPERATURE > (
SELECT temperature
FROM Weather w2
WHERE w2.recordDate = DATE_sub(w1.recordDate, INTERVAL 1 DAY) )
내가 어려워하는 유형의 문제다.
date_add 함수를 사용해서 풀어나가야 했던 문제.
스칼라 서브쿼리를 사용할 때 단일 table을 사용하여 필터링이 필요한 경우
위 코드 처럼 w1, w2로 이름을 붙여주어 구분하여야 한다.
신박한 방법으로 배울게 많았던 문제
machine_id 별 processing time 을 구하는 문제.
start 시간과 end 시간이 각각의 칼럼으로 저장되어 있었다면 30초면 풀었을 문제지만 하나의 칼럼에 저장되어 있어 꽤 시간이 걸렸다.
select
a.machine_id,
round(avg(b.timestamp - a.timestamp), 3) processing_time
from Activity a,
Activity b
where
a.machine_id = b.machine_id
and
a.process_id = b.process_id
and
a.activity_type = 'start'
and
b.activity_type = 'end'
group by machine_id
풀이 1은 from 절에서 같은 테이블을 두 번 요청하여 가로로 길게 붙인 형태를 만들었다.
where - and 를 통해 start 시간만 있는 열, end 시간만 있는 열을 만들어
select 절 연산을 통해 답을 구하였다.
select
machine_id,
round(sum(case when activity_type = 'start' then timestamp * -1 else timestamp end)
/(select count(distinct process_id)),3) processing_time
from Activity
group by machine_id
"줄리안 데이 수"란 주어진 날짜를 기준으로 하는 연속적인 일수 계산을 말합니다. 이 값은 날짜 간의 차이를 계산하는 데 유용합니다.
정의: 줄리안 데이 수는 천문학에서 유래된 개념으로, 서기 4713년 1월 1일을 기준으로 한 날짜의 연속적인 일수입니다. 즉, 줄리안 데이 수는 해당 기준일 이후 경과한 날의 수를 나타냅니다.
사용 용도: 주로 날짜 간의 차이를 계산하는 데 사용됩니다. 두 날짜의 줄리안 데이 수를 각각 구하고, 이를 빼면 두 날짜 간의 일 수 차이를 쉽게 구할 수 있습니다. 예를 들어, 어떤 주문이 처리되는 데 걸린 시간을 계산할 때 줄리안 데이 수를 사용하면 정확한 일 수를 알 수 있습니다.
SQL에서의 사용: 데이터베이스 쿼리에서 JULIANDAY()
함수를 사용하면 주어진 날짜를 줄리안 데이 수로 변환할 수 있습니다. 이렇게 변환된 값을 이용해 두 날짜 사이의 차이를 계산하면, 처리 시간이나 기간을 일 단위로 측정할 수 있습니다.
따라서 "줄리안 데이 수"는 날짜 연산을 단순화하고, 정확한 시간차 계산을 가능하게 하는 유용한 도구입니다.