[mysql/oracle] 입양 시각 구하기(1)

2023. 2. 3. 21:57Programmers/SQL

문제

 

결과 

 

mysql

1. date_format

1
2
3
4
5
SELECT date_format(datetime'%H') hour, count(*) COUNT
from animal_outs
where date_format(datetime'%H') between 9 and 19
group by date_format(datetime'%H')
order by HOUR
cs

처음에 date_format으로 풀었는데 생각해보니까 시간 하나만 뽑으면 되는 거라서 hour을 사용하면 된다.

 

2. hour

1
2
3
4
5
SELECT hour(datetime) hour, count(*) COUNT
from animal_outs
where hour(datetime) between 9 and 19
group by hour(datetime)
order by HOUR
cs
hour(시간, 날짜 컬럼) - mysql

 

oracle

1. to_char

1
2
3
4
5
SELECT TO_CHAR(DATETIME,'HH24') HOUR, COUNT(*) COUNT
FROM ANIMAL_OUTS 
WHERE TO_CHAR(DATETIME,'HH24') BETWEEN 09 AND 19
GROUP BY TO_CHAR(DATETIME,'HH24')
ORDER BY TO_CHAR(DATETIME,'HH24');
cs

mysql과 같은 결과가 나오지만 왜인지 09시가 아닌 9로 나와야 정답으로 인정된다.

 

2. to_char + ltrim

1
2
3
4
5
SELECT LTRIM(TO_CHAR(DATETIME,'HH24'),'0') HOUR, COUNT(*) COUNT
FROM ANIMAL_OUTS 
WHERE TO_CHAR(DATETIME,'HH24') BETWEEN 09 AND 19
GROUP BY TO_CHAR(DATETIME,'HH24')
ORDER BY TO_CHAR(DATETIME,'HH24');
cs

LTRIM으로 왼쪽에 있는 9를 지웠다.