코드 카타
SELECT history_id,
car_id,
date_format(start_date, '%Y-%m-%d') START_DATE,
date_format(end_date, '%Y-%m-%d') END_DATE,
CASE WHEN datediff(END_DATE,START_DATE) >= 29 THEN '장기 대여'
ELSE '단기 대여' END RENT_TYPE #양쪽 날짜 포함이 아닌 "사이의 간격"으로 계산
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE year(start_date)='2022' and month(start_date)='9'
ORDER BY history_id desc
DATEDIFF
mysql : datediff(끝 날짜, 시작 날짜) (날짜 형태는 day가 기준) / oracle : datediff(날짜 형태 , 끝 날짜, 시작 날짜)
SELECT DATEDIFF('2022-09-30', '2022-09-01') #29 출력
day의 차이만 계산하므로 1일에서부터 29일까지의 날짜 차이를 계산
때문에 30일 이상 지난 반납과 같은 반납한 당일에 대한 날도 포함시키고 싶으면 출력값에 +1을 생각해야 함.
PYTHON
print와 return 차이
return | |
화면으로 보이게 해주는 함수. 즉, 출력을 함. 말그대로 화면에서 값을 보여주는 역할을 하고 컴퓨터는 print 함수의 값을 모름. 메모리를 사용하지 않음. |
함수 내부에서 계산 결과값을 함수 밖으로 내뱉음. 화면으로 출력을 하지 않지만, 컴퓨터가 그 값을 메모리를 사용해서 저장하고 있음. return은 저장만 하는데 출력이 되는 이유 : python이 기본으로 마지막 코드를 출력해주는 역할이 있기 때문. c 나 java 같이 다른 언어 같은 경우에서는 print()를 하지 않으면 값이 출력되지 않음 |
Class
Class 이름 : <이 부분은 붕어빵틀의 아무 모양이 없는 철판 같은 존재
def 함수 이름(self, 파라미터1, 파라미터2) : <붕어빵틀 철판의 붕어빵 모양. 즉 다른 모양을 다르걸 찍고 싶으면 def를 바꿔주면 됨
self.파라미터1 = 파라미터1(의 입력값) <붕어빵 기본적인 재료
a=이름() <핵심이 되는 재료. 얘에 따라서 팥붕이 될 수도 슈붕이 될 수 도 김피붕이 될 수도 있는거임
a.함수 이름
파라미터는 인자의 값을 담아 같은 값을 가지고 있고 변수와 역할은 비슷하나, 파라미터 내부에 값이 정확하게 할당이 된 것이 아니기 때문에 값이 있으면서도 없는 것과 같은 상태. 즉, 메타몽 같은 존재.
self.파라미터1 = 속성.
클래스 내부에 있는 변수를 속성이라 부름
self.과 같은 형태로 하는 역할은 변수와 같지만, 함수와 형태가 비슷해 속성이라는 다른 이름을 부여받은 듯 함.
def 함수 이름 = 메소드
클래스 내부에 있는 함수.
그냥 함수 역할의 차이점은 클래스의 내부에 있냐 외부에 있냐의 차이.
a=인스턴스(객체)
클래스를 담는 변수.
self
파라미터와 같은 존재. 얘가 진정한 메타몽임.
클래스를 담는 변수인 인스턴스 a가 선언이 되면 self에 a가 들어감.
하지만 self의 값이 a에 할당이 된 것은 아님.
self 자리에 a가 들어가 같은 함수 내용이 생성(복사) 됨.
즉, 붕어빵 틀에 붕어빵을 찍어 낸거임. self는 계속 틀의 역할을 함. 영원히.
class dragon:
def fly(self, name): #lee, LHJ
self.name = name #lee.name = LHJ
hy = dragon()
hy.fly('dragon')
lee = dragon()
lee.fly('LHJ')
클래스 이름 : dragon
메소드 : fly()
파라미터 : self, name
속성 : self.name
인스턴스(객체) : hy, lee
사용자 지정함수
class dragon:
def __init__(self, name): # 생성자 함수, 인스턴스에 클래스를 부여하자마자 값을 넣어버림
self.name = name #lee.name = LHJ
lee = dragon('LHJ')
lee.name
__int__ : 사용자 지정함수
인스턴스에 클래스를 부여한 뒤!!!!!! 인스턴스.함수()의 형태로 사용해야 했지만, 사용자 지정 함수는 클래스에서 바로 값을 넣을 수 있음.
떄문에 __int__은 class에서 한 번 밖에 사용하지 못 함.
주말에 공부를 하다니 대견한걸.
이렇게 꾸준히 나아갔으면 좋것다. 물론 해야할 게 더 많았지만.... 계속 이렇게 하다보면 점점 미루지 않게 될거라고 생각한다.
10분이라도 좋으니까 해야지. 뿌듯.