표준 SQL의 시간 함수

BigQuery는 다음 TIME 함수를 지원합니다.

CURRENT_TIME

CURRENT_TIME()

설명

현재 시간을 TIME 객체로 반환합니다.

반환 데이터 유형

TIME

예시

SELECT CURRENT_TIME() as now;

+----------------------------+
| now                        |
+----------------------------+
| 15:31:38.776361            |
+----------------------------+

TIME

1. TIME(hour, minute, second)
2. TIME(timestamp, [timezone])
3. TIME(datetime)

설명

  1. 시, 분, 초를 나타내는 INT64 값을 사용하여 TIME 객체를 구성합니다.
  2. TIMESTAMP 객체를 사용하여 TIME 객체를 구성합니다. 시간대를 지정하는 선택적 매개변수를 지원합니다. 시간대를 지정하지 않으면 기본 시간대인 UTC가 사용됩니다.
  3. DATETIME 객체를 사용하여 TIME 객체를 구성합니다.

반환 데이터 유형

TIME

예시

SELECT
  TIME(15, 30, 00) as time_hms,
  TIME(TIMESTAMP "2008-12-25 15:30:00+08", "America/Los_Angeles") as time_tstz;
+----------+-----------+
| time_hms | time_tstz |
+----------+-----------+
| 15:30:00 | 23:30:00  |
+----------+-----------+
SELECT
  TIME(DATETIME "2008-12-25 15:30:00.000000") AS time_dt;
+----------+
| time_dt  |
+----------+
| 15:30:00 |
+----------+

TIME_ADD

TIME_ADD(time_expression, INTERVAL INT64_expr part)

설명

TIME 객체에 partINT64_expr 단위를 더합니다.

TIME_ADD는 다음 part 값을 지원합니다.

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

이 함수는 값이 00:00:00~24:00:00 경계를 벗어나면 자동으로 조정합니다. 예를 들어 23:30:00에 한 시간을 더하면 반환되는 값은 00:30:00입니다.

반환 데이터 유형

TIME

예시

SELECT
  TIME "15:30:00" as original_time,
  TIME_ADD(TIME "15:30:00", INTERVAL 10 MINUTE) as later;

+-----------------------------+------------------------+
| original_time               | later                  |
+-----------------------------+------------------------+
| 15:30:00                    | 15:40:00               |
+-----------------------------+------------------------+

TIME_SUB

TIME_SUB(time_expression, INTERVAL INT_expr part)

설명

TIME 객체에서 partINT64_expr 단위를 뺍니다.

TIME_SUB는 다음 part 값을 지원합니다.

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

이 함수는 값이 00:00:00~24:00:00 경계를 벗어나면 자동으로 조정합니다. 예를 들어 00:30:00에서 한 시간을 빼면 반환되는 값은 23:30:00입니다.

반환 데이터 유형

TIME

예시

SELECT
  TIME "15:30:00" as original_date,
  TIME_SUB(TIME "15:30:00", INTERVAL 10 MINUTE) as earlier;

+-----------------------------+------------------------+
| original_date                | earlier                |
+-----------------------------+------------------------+
| 15:30:00                    | 15:20:00               |
+-----------------------------+------------------------+

TIME_DIFF

TIME_DIFF(time_expression, time_expression, part)

설명

두 TIME 객체 사이에서 지정된 전체 part 간격의 수를 반환합니다. 두 시간 객체 간 마이크로초의 차이가 INT64 값을 오버플로하는 경우처럼 계산이 결과 유형을 오버플로하는 경우 오류가 발생합니다.

TIME_DIFF는 다음 part 값을 지원합니다.

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

반환 데이터 유형

INT64

예시

SELECT
  TIME "15:30:00" as first_time,
  TIME "14:35:00" as second_time,
  TIME_DIFF(TIME "15:30:00", TIME "14:35:00", MINUTE) as difference;

+----------------------------+------------------------+------------------------+
| first_time                 | second_time            | difference             |
+----------------------------+------------------------+------------------------+
| 15:30:00                   | 14:35:00               | 55                     |
+----------------------------+------------------------+------------------------+

TIME_TRUNC

TIME_TRUNC(time_expression, part)

설명

TIME 객체를 part 단위로 자릅니다.

TIME_TRUNC는 다음 part 값을 지원합니다.

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

반환 데이터 유형

TIME

예시

SELECT
  TIME "15:30:00" as original,
  TIME_TRUNC(TIME "15:30:00", HOUR) as truncated;

+----------------------------+------------------------+
| original                   | truncated              |
+----------------------------+------------------------+
| 15:30:00                   | 15:00:00               |
+----------------------------+------------------------+

FORMAT_TIME

FORMAT_TIME(format_string, time_object)

설명 지정된 format_string에 따라 TIME 객체 형식을 지정합니다. 이 함수가 지원하는 형식 요소 목록은 TIME에 지원되는 형식 요소를 참조하세요.

반환 데이터 유형

STRING

예시

SELECT FORMAT_TIME("%R", TIME "15:30:00") as formatted_time;

+----------------+
| formatted_time |
+----------------+
| 15:30          |
+----------------+

PARSE_TIME

PARSE_TIME(format_string, string)

설명

format_string과 문자열을 사용하여 TIME 객체를 반환합니다. 이 함수가 지원하는 형식 요소 목록은 TIME에 지원되는 형식 요소를 참조하세요.

PARSE_TIME을 사용할 때는 다음 사항에 유의하세요.

  • 미지정 필드: 지정하지 않은 필드는 00:00:00.0부터 초기화됩니다. 예를 들어 seconds가 지정되지 않으면 00이 기본값이 되고 나머지도 마찬가지입니다.
  • 공백: 형식 문자열에 하나 이상의 공백이 연달아 있는 경우는 TIME 문자열에 0개 이상의 공백이 연달아 있는 것과 같습니다. 또한 TIME 문자열의 선행 및 후행 공백은 형식 문자열에 없더라도 항상 허용됩니다.
  • 형식 우선순위: 2개(또는 그 이상)의 형식 요소에 겹치는 정보가 있을 경우, 일반적으로 마지막 요소가 앞의 요소보다 우선합니다.

반환 데이터 유형

TIME

예시

SELECT PARSE_TIME("%H", "15") as parsed_time;

+-------------+
| parsed_time |
+-------------+
| 15:00:00    |
+-------------+

TIME에 지원되는 형식 요소

별도로 명시하지 않은 경우 형식 문자열을 사용하는 TIME 함수는 다음 요소를 지원합니다.

형식 요소 설명
%H 시간(24시간제)을 10진수(00~23)로 표현한 것입니다.
%I 시간(12시간제)을 10진수(01~12)로 표현한 것입니다.
%j 연중 일을 10진수(001~366)로 표현한 것입니다.
%k 시간(24시간제)을 10진수(0~23)로 표현한 것입니다. 한 자릿수 앞에는 공백이 옵니다.
%l 시간(12시간제)을 10진수(1~12)로 표현한 것입니다. 한 자릿수 앞에는 공백이 옵니다.
%M 분을 10진수(00-59)로 표현한 것입니다.
%n 줄바꿈 문자입니다.
%P am 또는 pm입니다.
%p AM 또는 PM입니다.
%R %H:%M 형식으로 표현한 시간입니다.
%r AM/PM 표기법을 사용한 12시간제 시간입니다.
%S 초를 10진수(00-60)로 표현한 것입니다.
%T %H:%M:%S 형식으로 표현한 시간입니다.
%t 탭 문자입니다.
%X 시간을 HH:MM:SS 형식으로 표현한 것입니다.
%% 단일 % 문자입니다.
%E#S 초를 #자리 소수의 정밀도로 표현한 것입니다.
%E*S 초를 전체 소수 자릿수로 표현한 것입니다(리터럴 '*').
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.