카테고리 없음

[TIL 22]

LHJ_ 2024. 12. 15. 23:58

코드 카타

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 차이

print 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분이라도 좋으니까 해야지. 뿌듯.