AI SCHOOL/SQL

[SQL] 날짜 함수

moru_xz 2023. 1. 25. 17:46

날짜 : DATE()

시간 : DATETIME()

 

SELECT CURRENT_DATE();

현재 날짜 얻는 방법

--timezone을 설정할 수 있습니다.
SELECT DATE('2023-1-1', 'Asia/Seoul')

데이터 추출

SELECT EXTRACT(YEAR FROM DATE '2023-1-1');

SELECT EXTRACT(DAY FROM CURRENT_DATE());

시간

SELECT CURRENT_DATETIME()

DATETIME을 통해 시간 객체 생성할 수 있음 

1. DATETIME(year, month, day, hour, minute, second)
2. DATETIME(date_expression[, time_expression])
3. DATETIME(timestamp_expression [, time_zone])
SELECT DATETIME(2023, 1, 25, 05, 30, 00)
>> 2023-01-25T05:30:00
SELECT CURRENT_DATETIME()

데이터 추출

SELECT EXTRACT(HOUR FROM CURRENT_DATETIME());

 

FORMAT_DATE

FORMAT_DATE(format_string, date_expr)

지정된 format_string에 따라 날짜를 변경 

날짜 형식은 링크 참조

 

SELECT FORMAT_DATE('%b-%d-%Y', DATE '2023-1-25') AS US_format;
>> Jan-25-2023

SELECT FORMAT_DATE('%y-%m-%d', DATE '2023-1-25') ;
>> 23-01-25

SELECT FORMAT_DATE('%x', DATE '2023-1-25') 
>> 01/25/23

format_date() 는 빅쿼리, date_format() 은 my sql

FORMAT_DATETIME

지정된 format_string에 따라 시간(datetime_expression)을 변경

링크 참조 (위와 동일)

SELECT FORMAT_DATE('%y/%m/%d %T', DATETIME '2023-1-25 15:30:00')
>> 23/01/25 15:30:00

 

DATE_DIFF

- 두 날짜 간에 (date_expression_a 와 date_expression_b) 지정된 date_part 간격의 정수를 반환

- date_part 는 year, monthm day 등을 지정할 수 있음 

- 첫 번째 날짜가 두 번째 날짜보다 이전이면 음수로 출력

SELECT DATE_DIFF(DATE '2023-9-3', DATE '2023-1-1', DAY)
>> 245

SELECT DATE_DIFF(DATE '2033-9-3', DATE '2023-1-1', YEAR)
>> 10

 

SELECT DATE_DIFF(delivered_at,created_at, day)
from `thelook_ecommerce.orders`
where status='Complete'

 

DATE_ADD, DATE_SUB

DATE_ADD

SELECT DATE_ADD(DATE '2023-1-25', INTERVAL 5 DAY);
>> 2023-01-30

SELECT DATE_ADD(DATE '2023-1-25', INTERVAL 5 MONTH);
>> 2023-06-25

DATE_SUB

SELECT DATE_SUB(DATE '2023-1-25', INTERVAL 5 DAY);
>> 2023-01-20

SELECT DATE_SUB(DATE '2023-1-25', INTERVAL 5 YEAR);
>> 2018-01-25

 

DATETIME_ADD, DATETIME_SUB

- 지정된 시간 간격을 추가 및 빼는 함수

- 형식은 date와 동일

- 더하거나 뺄 수 있는 수치는 다음과 같음

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
SELECT DATETIME_ADD(DATETIME "2023-12-25 15:30:00", INTERVAL 10 MINUTE);
>>  2023-12-25T15:40:00

'AI SCHOOL > SQL' 카테고리의 다른 글

[SQL] JOIN  (1) 2023.01.26
[SQL] 조건분기(CASE, IF) 연습문제  (1) 2023.01.26
[SQL] 숫자, 문자열 함수, 날짜 함수 연습문제(프로그래머스)  (0) 2023.01.25
[SQL] 숫자, 문자열 함수  (0) 2023.01.25
[SQL] HAVING, ORDER BY  (0) 2023.01.20