예를 들어, 아래와 같이 서비스를 SERVICE_TABLE 이 있다고 가정할 때, no user_id service_no start_date end_date 0001 janes 1 2021-03-27 23:59:59.000 2022-06-27 23:59:59.000 0002 judys 2 2021-04-24 23:59:59.000 2021-09-24 23:59:59.000 서비스 번호에 따른 서비스 이름을 출력하고 싶다면 조건문 CASE를 이용하면 된다. SELECT user_id, service_no, CASE WHEN service = 1 THEN 'Neflix' WHEN service = 2 THEN 'Watcha' END AS service_name FROM SERVICE_TABLE user_id..
예를 들어, 넷플릭스 서비스를 신청한 고객이 있다. no user_id service_name start_date end_date 0001 janes netflix 2021-03-27 23:59:59.000 2022-06-27 23:59:59.000 그 고객이 서비스가 끝나는 날로부터 며칠이 남았는지 remaining 컬럼을 추가로 알고 싶다. (오늘은 2021년 4월 27일) SELECT *, DATEDIFF(DAY, GETDATE(), end_date) AS remaining FROM SERVICE_TABLE WHERE no = 0001 no user_id service_name start_date end_date remaining 0001 janes netflix 2021-03-27 23:59:59..
예를 들어, 넷플릭스 서비스를 신청한 고객이 있다. no user_id service_name start_date end_date 0001 janes netflix 2021-03-22 23:59:59.000 2021-04-22 23:59:59.000 그 고객이 서비스를 며칠만 더 사용해보고 싶어서 일주일 기간 연장을 신청했다. UPDATE SERVICE_TABLE SET end_date = DATEADD(DAY, 1, end_date) WHERE no = 0001 no user_id service_name start_date end_date 0001 janes netflix 2021-03-22 23:59:59.000 2021-04-23 23:59:59.000 일주일 더 겪으면서 만족한 고객이 한 달 더 ..
제한할 Bandwidth를 주입하는데 GB로 입력되어 있는 값을 Byte 단위로 변환해서 넣어줘야 하는 일이 생겼다. int bandwidth = 2; StringBuilder builder = new StringBuilder(); builder.append("BWLIMIT=").append(bandwidth * 1073741824); 넣고나니 생각하지 못한 마이너스 값이 들어가 있다. -2147483648 에 연산 값을 넣어주는 게 아니고 바로 연산만 하면 되니까 생각하고 가장 기초적인 걸 간과했다. 이런 실수를 하다니; 변수 따위랑 상관없이, 시에는 자료형 변환에 주의하여야 한다. bandwidth는 int 형인데 long 형과의 연산 결과값이 int의 크기를 벗어났다. 당연히 오버플로우가 발생한다...