2024. 7. 4. 16:20ㆍ[Node.js_6기 사전캠프]
DATETIME에서 DATE로 형 변환
우선, 추출해야 하는 컬럼을 지정하고 조회할 때 보여지는 순서와 컬럼명까지 코드를 작성하는 것은 쉬웠다.
SELECT ANIMAL_ID, NAME, DATETIME as '날짜' from ANIMAL_INS order by ANIMAL_ID asc; |
그러나 DATETIME의 데이터가 '2014-08-08 04:20:00' 의 형식으로 되어 있어, 날짜만 보이도록 새로운 코드를 추가해야만 했다. DATE 함수와 DATE_FORMAT 함수를 찾았으나, DATE 함수는 하기와 같이 시간이 이상하게 표기되어 포기했다.
SELECT t1.ANIMAL_ID, t1.NAME, DATE(t1.DATETIME) as '날짜' from ANIMAL_INS t1 order by t1.ANIMAL_ID asc; |
원하는 형식으로 추출할 수 있다는 DATE_FORMAT 함수를 사용해보니, 드디어 시간이 사라졌다. 그러나 4자리 숫자로 연도를 표시해야 하는데, 2자리를 표시하는 '%y'를 사용했다. 대소문자 구분에 따라 결과가 달라지니, 꼭 확인해야 한다.
SELECT t1.ANIMAL_ID, t1.NAME, date_format(t1.DATETIME, '%y-%m-%d') as '날짜' from ANIMAL_INS t1 order by t1.ANIMAL_ID asc; |
드디어, 정답에 해당하는 코드가 완성되었다.
SELECT t1.ANIMAL_ID, t1.NAME, date_format(t1.DATETIME, '%Y-%m-%d') as '날짜' from ANIMAL_INS t1 order by t1.ANIMAL_ID asc; |
◈ 오늘의 눈물 한 방울
DATE_FORMAT 함수를 알려준 블로그 글에서 't1'에 대한 설명이 없어서, 빼고 테스트 해보니 오류가 났다. 정확히 무슨 기능인지 모르겠지만, 일단 다 넣고 테스트 했을 때 이상이 없어서 정답을 제출한 뒤... 개발자 지인 찬스를 썼다. 아무리 검색해도 table 1 같은 임시 약어(?) 같은 기능으로 보이는데, 왜 빼면 오류가 나는 것인지 모르겠다고 질문했다. 결론은... t1은 본 문제에서 필요가 없었다. 오류가 났던 것은... 그냥 테스트 과정에서 뭔가 타이핑을 잘못했던 것 같다.
t1은 Table1의 약어로, 특정 테이블에서 컬럼 데이터를 가져올 때 쓰는 코드이다. 2개 이상의 테이블을 활용해야 할 때 주로 쓴다. 본 문제처럼 테이블이 하나일 경우, 굳이 쓸 필요가 없다. 사용 예시는 하기와 같다.
SELECT t.test_info_id, t.test_info_name, t.test_info_front, u.user_info_id, u.user_info_period, u.user_info_time, u.user_info_state FROM tb_test_info t LEFT JOIN tb_user_info u ON t.test_info_id = u.test_info_id and u.user_info_date = ? WHERE t.detail_info_id = ? and t.test_info_state != 4 |
너무 긴 각 테이블 명 뒤에 약어(별명? 별칭?)로 쓸 이름을 붙여주고, 각 테이블에서 가져올 칼럼 데이터는 '약어.칼럼명'으로 불러온다.
'[Node.js_6기 사전캠프]' 카테고리의 다른 글
[Node.js_6기 사전캠프] Today I Learned _0717 (0) | 2024.07.17 |
---|---|
[Node.js_6기 사전캠프] Today I Learn_0701 (0) | 2024.07.01 |
[Node.js_6기 사전캠프] 개발 용어 정리 (0) | 2024.06.26 |
[Node.js_6기 사전캠프] 게임 서버 트랙에서 자바스크립트를 학습하는 이유 (0) | 2024.06.25 |
[Node.js_6기 사전캠프] JavaScript 톺아보기 (0) | 2024.06.24 |