예제 5)

17번
team_projects 테이블에서 AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요!
정담: select name
from team_projects
where aws_cost>=40000
실수 : 이름을 선택하라고 했음으로 name, 40000이상 이라고 했음으로 "="
team_projects 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요! 단, start_date < ‘2023-01-01’ 조건을 사용하지 말고 쿼리를 작성해주세요!
정답:
select *
from team_projects
where YEAR(start_date) = 2022
실수 : year절 을 몰랐음, 2022에 따음표 쓰려고 했음.
team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요!
(하드코딩은 직접입력 금지 참조하는 구문으로)
select
from team_projects
where CURDATE() BETWEEN START_date and end_date
실수 : CURATE를 몰랐음 위 구문의 뜻은 현재날짜 불러오기, 단 시작 과 끝 날짜 사이에( 그러니까 오늘 날짜가 시작, 끝 사이에 있는) 있는 날짜만 불러오기
CURDATE(): 현재 날짜를 반환한다.
CURTIME(): 현재 시간을 반환한다.
NOW(): 현재 날짜와 시간 정보를 반환한다.
team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요!
문제풀기 전에 생각해본것:
1. 비트윈을 이용해서 날짜를 세는 함수
2. 그럼 count 인가?
select *
from team_projects
where count(date) between start_date And end_date;
틀림
정답 : slect name,
DATEDIFF(end_date, start_date) as "working_days"
from team_projects;
여기서 DATEDIFF 함수란? (날짜부분, 시작날짜, 끝날짜,[주시작])
날짜부분 = 'year', 'month'
시작날짜 = 시작하는 날짜를 말한다.
끝날짜 : 끝나는 날짜를 말한다.
주시작 : 한주의 시작요일을 말한다.
궁금증 저 첫번째 부분에 날짜_부분은 뭘까?)
새롭게 알게 된 부분