중요한 3가지는 꼭 기억하자 !
GMT : 영국 그리니치 천문대 기준
한국시간 GMT +9
UTC : Universal Time Coordinated, 협정세계시
한국시간 UTC +9
타임존이 존재한다는 사실을 기억하기 🐱
천 분의 1초(1,000ms = 1초)
빠른 반응이 필요한 분야에서 사용(초보다 더 정확)
ms => TIMESTAMP => DATETIME 으로 변경해 사용한다. (mainly)
1/1,000ms = 1/1,000,000초
시간데이터 간의 변환
대부분 회사 테이블에는 TIMESTAMP로 통일되어 있다.(또는 DATETIME)
TIMESTAMP-DATETIME 변환해야 하는 경우가 있으니, 알아두기
[Quiz.] 1704175819711ms ?
2024-01-02 15:26:59(DATETIME)를 의미한다.
당황하지 말자~
: 현재 DATETIME을 출력한다.
괄호 안에 <타임존> 정보를 넣지 않으면 UTC 기준으로 출력된다.
쿼리 결과에서 한국 시간과 UTC 간 9시간 시차를 확인 가능!
: DATETIME에서 특정 부분만 추출하고 싶은 경우
특정부분 - 연도/월/일
예를 들면, DB에 주문 DATETIME이 있고,
월별 주문/일별 주문과 같은 정보를 추출하고 싶을 때 사용할 수 있겠다.
// 사용방법
EXTRACT(part FROM datetime.expression)
특정 파트를 DATETIME.표현에서 뽑아내자~
이런 구문으로 사용할 수 있음.
date / year / month / day / hour / minute
다 쪼갤 수 있다.
EXTRACT(DAYOFWEEK FROM datetime_col)
: 한 주의 첫 날이 일요일인 값이 나온다는 점!
시간 자르기 함수.
자르는 기준은 DATETIME ~~~를 넣어준 후, 다음 인자로
[ DAY / YEAR / MONTH / HOUR ] 등을 넣는다.
그럼 나오는 결과값, 넣은 기준 이하는 기본값으로 출력된다.
e.g. DATETIME_TRUNC(DATETIME "2025-01-18 01:43:31", MONTH)
(result) => 2025-01-01T00:00:00
쓸모?
EXTRACT / DATETIME_TRUC 둘 다 알아놓고,
DATE, HOUR까지만 남기고 아래 분/초 단위는 없애고 싶을 땐 후자를 이용하는 것으로~~~
: 문자열로 저장된 DATETIME을 DATETIME 타입으로 바꾸고 싶을 때 사용한다.
이거 너무... 필요했던 것.... 빅쿼리 환경에선 안썼지만, sql 안 하는 요즘도 강의 들으며 솔깃하는 함수다.
사용방법은
PARSE_DATETIME('문자열 형태', 'DATETIME 문자열') AS datetime
문자열 형태 예시가 극악..이지만 month, day만 소문자라고 생각하면 할 만 하다. 💪🐹
파싱한다는 건 스트링, 문자열을 보고 분석해 알맞은 것으로 배치한다는 뜻으로 이해하면 되겠다.
DATETIME 타입의 데이터를 특정 형태의 문자열 데이터로 변환하고 싶은 경우.
PARSE_DATETIME
랑은 반대되는 개념으로 생각하면 된다.
파싱은 문자열 -> DATETIME
포맷은 DATETIME -> 문자열
: 마지막 날을 알고 싶은 경우 -> 자동으로 월의 마지막 날짜 값을 계산해 준다.
LAST_DAY(DATETIME)
는 해당 월의 마지막 값을 반환한다.
추가로 인자를 넣을 수도 있는데, 생략할 경우 default
값은 Month이다.
만약 인자로 WEEK를 넣어주면, 해당 주를 기준으로 마지막 날(default
토요일이 마지막)을 반환한다.
일요일이 한 주를 시작하는 요일로 세팅이 되어있는 건데, 이걸 바꿔주고 싶다면 위 예제 마지막 줄과 같이 WEEK(MONDAY)
지정을 해 주면 되겠다.
그럼 일요일이 마지막 날로 출력됨!
: 두 DATETIME의 차이를 구할 때 사용한다.
DATETIME_DIFF(첫 번째 DATETIME, 두 번째 DATETIME, 궁금한 차이)
궁금한 차이 : _DAY, WEEK, MONTH _등
오늘 들은 날짜/시간 데이터 총 정리를 가져와 봤다.
SQL 다루다 보면, 시간/날짜 데이터를 다룰 일이 많은데 빅쿼리 문법은 이렇구나 알아가는 시간이었다. 그리고 MySQL, Oracle도 닮은 점이 있는 것처럼 빅쿼리도 역시나 비슷한 점들이 꽤 많은 것 같다.
빅쿼리도 알아두고, 꾸준히 SQL 쿼리도 연습하다 보면 더 잘할 수 있겠지. 요즘 매일 빅쿼리 듣는 게 참 어려운데,, 짧은 시간 목표했지만 그것조차도 조금 어려운 느낌도 있어서 다시 습관화하는 게 중요할 것 같다.
추가공부 열심히!!
오늘 들은 DATETIME 관련 함수는 TIMESTAMP나 DATE에도 사용할 수 있으니까 대표적인 것들은 기억 속에 남겨두기로.. 💪😂