타임스탬프 함수

Cloud Spanner SQL은 다음과 같은 TIMESTAMP 함수를 지원합니다.

참고: 이 함수는 오버플로가 발생할 경우 런타임 오류를 반환합니다. 결과값은 정의된 날짜와 타임스탬프 최솟값/최댓값으로 제한됩니다.

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP()

설명

괄호는 선택사항입니다. 이 함수는 삽입된 윤초의 전후 20시간에 걸쳐 윤초를 분산하는 방식으로 처리합니다. CURRENT_TIMESTAMP()는 연속적이고 모호하지 않으며 분당 정확히 60초이고 윤초 동안 값을 반복하지 않는 TIMESTAMP 값을 생성합니다.

지원되는 입력 유형

해당 없음

결과 데이터 유형

TIMESTAMP

예시

SELECT CURRENT_TIMESTAMP() as now;

+--------------------------------+
| now                            |
+--------------------------------+
| 2020-06-02T23:58:40.347847393Z |
+--------------------------------+

EXTRACT

EXTRACT(part FROM timestamp_expression [AT TIME ZONE tz_spec])

설명

제공된 timestamp_expression에서 지정된 part에 해당하는 값을 반환합니다.

허용되는 part 값은 다음과 같습니다.

  • NANOSECOND
  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAYOFWEEK
  • DAY
  • DAYOFYEAR
  • WEEK: [0, 53] 범위에서 날짜의 주 번호를 반환합니다. 주는 일요일부터 시작되며 그 해의 첫 번째 일요일 이전 날짜는 0번째 주에 속합니다.
  • ISOWEEK: datetime_expressionISO 8601 주 번호를 반환합니다. ISOWEEK는 월요일에 시작됩니다. 반환 값은 [1, 53] 범위에 속합니다. 각 ISO 연도의 첫 번째 ISOWEEK는 그레고리력 연도의 첫 번째 목요일 이전의 월요일에 시작됩니다.
  • MONTH
  • QUARTER
  • YEAR
  • ISOYEAR: date_expression이 속한 주의 목요일을 포함하는 그레고리력 연도인 ISO 8601 주 번호 지정 연도를 반환합니다.
  • DATE

반환되는 값은 하위의 기간을 자릅니다. 예를 들어 초를 추출할 경우 EXTRACT는 밀리초와 마이크로초 값을 자릅니다.

시간대를 지정하는 방법에 대한 자세한 내용은 시간대 정의를 참조하세요.

반환 데이터 유형

INT64입니다. 단, 다음의 경우는 예외입니다.

  • partDATE이면 DATE 객체를 반환합니다.

다음 예시에서 EXTRACTDAY 시간 부분에 해당하는 값을 반환합니다.

WITH Input AS (SELECT TIMESTAMP("2008-12-25 05:30:00+00") AS timestamp_value)
SELECT
  EXTRACT(DAY FROM timestamp_value AT TIME ZONE "UTC") AS the_day_utc,
  EXTRACT(DAY FROM timestamp_value AT TIME ZONE "America/Los_Angeles") AS the_day_california
FROM Input

+-------------+--------------------+
| the_day_utc | the_day_california |
+-------------+--------------------+
| 25          | 24                 |
+-------------+--------------------+

다음 예시에서 EXTRACT는 타임스탬프 열의 다양한 시간 부분에 해당하는 값을 반환합니다.

WITH Timestamps AS (
  SELECT TIMESTAMP("2005-01-03 12:34:56+00") AS timestamp_value UNION ALL
  SELECT TIMESTAMP("2007-12-31 12:00:00+00") UNION ALL
  SELECT TIMESTAMP("2009-01-01 12:00:00+00") UNION ALL
  SELECT TIMESTAMP("2009-12-31 12:00:00+00") UNION ALL
  SELECT TIMESTAMP("2017-01-02 12:00:00+00") UNION ALL
  SELECT TIMESTAMP("2017-05-26 12:00:00+00")
)
SELECT
  timestamp_value,
  EXTRACT(ISOYEAR FROM timestamp_value) AS isoyear,
  EXTRACT(ISOWEEK FROM timestamp_value) AS isoweek,
  EXTRACT(YEAR FROM timestamp_value) AS year,
  EXTRACT(WEEK FROM timestamp_value) AS week
FROM Timestamps
ORDER BY timestamp_value;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+---------+---------+------+------+
| timestamp_value        | isoyear | isoweek | year | week |
+------------------------+---------+---------+------+------+
| 2005-01-03T12:34:56Z   | 2005    | 1       | 2005 | 1    |
| 2007-12-31T12:00:00Z   | 2008    | 1       | 2007 | 52   |
| 2009-01-01T12:00:00Z   | 2009    | 1       | 2009 | 0    |
| 2009-12-31T12:00:00Z   | 2009    | 53      | 2009 | 52   |
| 2017-01-02T12:00:00Z   | 2017    | 1       | 2017 | 1    |
| 2017-05-26T12:00:00Z   | 2017    | 21      | 2017 | 21   |
+------------------------+---------+---------+------+------+

STRING

STRING(timestamp_expression[, timezone])

설명

timestamp_expression을 STRING 데이터 유형으로 변환합니다. 시간대를 지정하는 선택적 매개변수를 지원합니다. 시간대를 지정하는 방법에 대한 자세한 내용은 시간대 정의를 참조하세요.

반환 데이터 유형

STRING

예시

SELECT STRING(TIMESTAMP "2008-12-25 15:30:00+00", "UTC") AS string;

+-------------------------------+
| string                        |
+-------------------------------+
| 2008-12-25 15:30:00+00        |
+-------------------------------+

TIMESTAMP

TIMESTAMP(string_expression[, timezone])
TIMESTAMP(date_expression[, timezone])

설명

  • string_expression[, timezone]: STRING 표현식을 TIMESTAMP 데이터 유형으로 변환합니다. string_expression은 타임스탬프 리터럴을 포함해야 합니다. string_expression에 타임스탬프 리터럴의 시간대가 포함된 경우 명시적인 timezone 인수를 포함하지 마세요.
  • date_expression[, timezone]: DATE 객체를 TIMESTAMP 데이터 유형으로 변환합니다.

이 함수는 시간대를 지정하는 선택적 매개변수를 지원합니다. 시간대를 지정하지 않으면 기본 시간대인 America/Los_Angeles가 사용됩니다.

반환 데이터 유형

TIMESTAMP

SELECT TIMESTAMP("2008-12-25 15:30:00+00") AS timestamp_str;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+----------------------+
| timestamp_str        |
+----------------------+
| 2008-12-25T15:30:00Z |
+----------------------+
SELECT TIMESTAMP("2008-12-25 15:30:00", "America/Los_Angeles") AS timestamp_str;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+----------------------+
| timestamp_str        |
+----------------------+
| 2008-12-25T23:30:00Z |
+----------------------+
SELECT TIMESTAMP("2008-12-25 15:30:00 UTC") AS timestamp_str;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+----------------------+
| timestamp_str        |
+----------------------+
| 2008-12-25T15:30:00Z |
+----------------------+
SELECT TIMESTAMP(DATE "2008-12-25") AS timestamp_date;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+----------------------+
| timestamp_str        |
+----------------------+
| 2008-12-25T08:00:00Z |
+----------------------+

TIMESTAMP_ADD

TIMESTAMP_ADD(timestamp_expression, INTERVAL int64_expression date_part)

설명

시간대와 관계없이 date_partint64_expression 단위를 타임스탬프에 추가합니다.

TIMESTAMP_ADDdate_part에 다음 값을 지원합니다.

  • NANOSECOND
  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR: 60 MINUTE에 해당합니다.
  • DAY: 24 HOUR에 해당합니다.

반환 데이터 유형

TIMESTAMP

예시

SELECT
  TIMESTAMP("2008-12-25 15:30:00+00") AS original,
  TIMESTAMP_ADD(TIMESTAMP "2008-12-25 15:30:00+00", INTERVAL 10 MINUTE) AS later;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+------------------------+
| original               | later                  |
+------------------------+------------------------+
| 2008-12-25T15:30:00Z   | 2008-12-25T15:40:00Z   |
+------------------------+------------------------+

TIMESTAMP_SUB

TIMESTAMP_SUB(timestamp_expression, INTERVAL int64_expression date_part)

설명

시간대와 관계없이 타임스탬프에서 date_partint64_expression 단위를 뺍니다.

TIMESTAMP_SUBdate_part에 다음 값을 지원합니다.

  • NANOSECOND
  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR: 60 MINUTE에 해당합니다.
  • DAY: 24 HOUR에 해당합니다.

반환 데이터 유형

TIMESTAMP

예시

SELECT
  TIMESTAMP("2008-12-25 15:30:00+00") AS original,
  TIMESTAMP_SUB(TIMESTAMP "2008-12-25 15:30:00+00", INTERVAL 10 MINUTE) AS earlier;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+------------------------+
| original               | earlier                |
+------------------------+------------------------+
| 2008-12-25T15:30:00Z   | 2008-12-25T15:20:00Z   |
+------------------------+------------------------+

TIMESTAMP_DIFF

TIMESTAMP_DIFF(timestamp_expression_a, timestamp_expression_b, date_part)

설명

TIMESTAMP 객체(timestamp_expression_a - timestamp_expression_b) 사이의 지정된 전체 date_part 간격 수를 반환합니다. 첫 번째 TIMESTAMP이 두 번째 항목보다 이전이면 출력이 음수입니다. 두 TIMESTAMP 객체 간 나노초의 차이가 INT64 값을 오버플로하는 경우처럼 계산이 결과 유형을 오버플로하는 경우 오류가 발생합니다.

TIMESTAMP_DIFFdate_part에 다음 값을 지원합니다.

  • NANOSECOND
  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR: 60 MINUTE에 해당합니다.
  • DAY: 24 HOUR에 해당합니다.

반환 데이터 유형

INT64

예시

SELECT
  TIMESTAMP("2010-07-07 10:20:00+00") AS later_timestamp,
  TIMESTAMP("2008-12-25 15:30:00+00") AS earlier_timestamp,
  TIMESTAMP_DIFF(TIMESTAMP "2010-07-07 10:20:00+00", TIMESTAMP "2008-12-25 15:30:00+00", HOUR) AS hours;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+------------------------+-------+
| later_timestamp        | earlier_timestamp      | hours |
+------------------------+------------------------+-------+
| 2010-07-07T10:20:00Z   | 2008-12-25T15:30:00Z   | 13410 |
+------------------------+------------------------+-------+

다음 예시에서 첫 번째 타임스탬프가 두 번째 타임스탬프보다 먼저 발생하면 음수 출력이 생성됩니다.

SELECT TIMESTAMP_DIFF(TIMESTAMP "2018-08-14", TIMESTAMP "2018-10-14", DAY);

+---------------+
| negative_diff |
+---------------+
| -61           |
+---------------+

이 예시에서는 지정된 전체 HOUR 간격의 수만 포함되므로 결과가 0입니다.

SELECT TIMESTAMP_DIFF("2001-02-01 01:00:00", "2001-02-01 00:00:01", HOUR)

+---------------+
| negative_diff |
+---------------+
| 0             |
+---------------+

TIMESTAMP_TRUNC

TIMESTAMP_TRUNC(timestamp_expression, date_part[, time_zone])

설명

타임스탬프를 date_part의 단위로 자릅니다.

TIMESTAMP_TRUNCdate_part에 다음 값을 지원합니다.

  • NANOSECOND
  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • ISOWEEK: timestamp_expression을 이전 ISO 8601 주 경계로 자릅니다. ISOWEEK는 월요일에 시작됩니다. 각 ISO 연도의 첫 번째 ISOWEEK는 해당 그레고리력 연도의 첫 번째 목요일을 포함합니다. 이보다 이전의 모든 date_expression은 이전 월요일로 자릅니다.
  • MONTH
  • QUARTER
  • YEAR
  • ISOYEAR: timestamp_expression을 이전 ISO 8601 주 번호 지정 연도 경계로 자릅니다. ISO 연도 경계는 목요일이 해당 그레고리력 연도에 속하는 첫 번째 주의 월요일입니다.

TIMESTAMP_TRUNC 함수는 선택적 time_zone 매개변수를 지원합니다. 이 매개변수는 다음 date_parts에 적용됩니다.

  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

자르기 작업의 일환으로 기본 시간대인 America/Los_Angeles 이외의 시간대를 사용하려면 이 매개변수를 사용합니다.

TIMESTAMPMINUTE 또는 HOUR로 자르면 TIMESTAMP_TRUNC는 지정된(또는 기본값) 시간대에서 TIMESTAMP의 상용시를 결정하고, 해당 TIMESTAMP에서 분과 초(HOUR로 자를 경우) 또는 초(MINUTE로 자를 경우)를 뺍니다. 이렇게 하면 대부분의 경우 직관적인 결과가 제공되지만, 순차적 시간으로 나열되지 않는 일광 절약 시간 전환 무렵에는 직관적이지 않은 결과를 얻게 됩니다.

반환 데이터 유형

TIMESTAMP

SELECT
  TIMESTAMP_TRUNC(TIMESTAMP "2008-12-25 15:30:00+00", DAY, "UTC") AS utc,
  TIMESTAMP_TRUNC(TIMESTAMP "2008-12-25 15:30:00+00", DAY, "America/Los_Angeles") AS la;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+------------------------+
| utc                    | la                     |
+------------------------+------------------------+
| 2008-12-25T00:00:00Z   | 2008-12-25T08:00:00Z   |
+------------------------+------------------------+

다음 예에서 원본 timestamp_expression은 그레고리력 2015 연도에 속합니다. 하지만 ISOYEAR 날짜 부분이 있는 TIMESTAMP_TRUNC는 그레고리력 연도가 아니라 ISO 연도의 시작으로 timestamp_expression을 자릅니다. 2015 달력 연도의 첫 번째 목요일은 2015-01-01이었으므로 ISO 2015 연도는 이전 월요일인 2014-12-29에 시작합니다. 따라서 timestamp_expression 2015-06-15 00:00:00+00 이전의 ISO 연도 경계는 2014-12-29입니다.

SELECT
  TIMESTAMP_TRUNC("2015-06-15 00:00:00+00", ISOYEAR) AS isoyear_boundary,
  EXTRACT(ISOYEAR FROM TIMESTAMP "2015-06-15 00:00:00+00") AS isoyear_number;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+----------------+
| parsed                 | isoyear_number |
+------------------------+----------------+
| 2014-12-29T08:00:00Z   | 2015           |
+------------------------+----------------+

FORMAT_TIMESTAMP

FORMAT_TIMESTAMP(format_string, timestamp[, time_zone])

설명

지정된 format_string에 따라 타임스탬프의 형식을 지정합니다.

이 함수가 지원하는 형식 요소 목록은 TIMESTAMP에 지원되는 형식 요소를 참조하세요.

반환 데이터 유형

STRING

예시

SELECT FORMAT_TIMESTAMP("%c", TIMESTAMP "2008-12-25 15:30:00+00", "UTC") AS formatted;

+--------------------------+
| formatted                |
+--------------------------+
| Thu Dec 25 15:30:00 2008 |
+--------------------------+
SELECT FORMAT_TIMESTAMP("%b-%d-%Y", TIMESTAMP "2008-12-25 15:30:00+00") AS formatted;

+-------------+
| formatted   |
+-------------+
| Dec-25-2008 |
+-------------+
SELECT FORMAT_TIMESTAMP("%b %Y", TIMESTAMP "2008-12-25 15:30:00+00")
  AS formatted;

+-------------+
| formatted   |
+-------------+
| Dec 2008    |
+-------------+

PARSE_TIMESTAMP

PARSE_TIMESTAMP(format_string, string[, time_zone])

설명

format_string과 타임스탬프의 문자열 표현을 사용하여 TIMESTAMP 객체를 반환합니다.

PARSE_TIMESTAMP를 사용할 때는 다음 사항에 유의하세요.

  • 미지정 필드. 지정되지 않은 필드는 1970-01-01 00:00:00.0부터 초기화됩니다. 함수의 시간대 인수가 있으면 지정된 시간대가 이 초기화 값에 사용됩니다. 그렇지 않으면 초기화 값은 기본 시간대인 America/Los_Angeles를 사용합니다. 예를 들어 연도가 지정되지 않으면 1970이 기본값이 되고 나머지도 마찬가지입니다.
  • 대소문자를 구분하지 않는 이름: Monday, February 등의 이름은 대소문자를 구분하지 않습니다.
  • 공백: 형식 문자열에 하나 이상의 공백이 연달아 있는 경우는 날짜 문자열에 0개 이상의 공백이 연달아 있는 것과 같습니다. 또한 날짜 문자열의 선행 및 후행 공백은 형식 문자열에 없더라도 언제나 허용됩니다.
  • 형식 우선순위. 2개(또는 그 이상)의 형식 요소에 겹치는 정보가 있을 경우(예: %F%Y가 모두 연도에 적용되는 경우), 일반적으로 마지막 요소가 앞의 요소보다 우선하며 몇 가지 예외가 있습니다(%s, %C, %y 설명 참조).

반환 데이터 유형

TIMESTAMP

예시

SELECT PARSE_TIMESTAMP("%c", "Thu Dec 25 07:30:00 2008") AS parsed;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+
| parsed                 |
+------------------------+
| 2008-12-25T15:30:00Z   |
+------------------------+

TIMESTAMP_SECONDS

TIMESTAMP_SECONDS(int64_expression)

설명

int64_expression을 1970-01-01 00:00:00 UTC 이후의 초 수로 해석합니다.

반환 데이터 유형

TIMESTAMP

예시

SELECT TIMESTAMP_SECONDS(1230219000) AS timestamp_value;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+
| timestamp_value        |
+------------------------+
| 2008-12-25T15:30:00Z   |
+------------------------+

TIMESTAMP_MILLIS

TIMESTAMP_MILLIS(int64_expression)

설명

int64_expression을 1970-01-01 00:00:00 UTC 이후의 밀리초 수로 해석합니다.

반환 데이터 유형

TIMESTAMP

예시

SELECT TIMESTAMP_MILLIS(1230219000000) AS timestamp_value;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+
| timestamp_value        |
+------------------------+
| 2008-12-25T15:30:00Z   |
+------------------------+

TIMESTAMP_MICROS

TIMESTAMP_MICROS(int64_expression)

설명

int64_expression을 1970-01-01 00:00:00 UTC 이후의 마이크로초 수로 해석합니다.

반환 데이터 유형

TIMESTAMP

예시

SELECT TIMESTAMP_MICROS(1230219000000000) AS timestamp_value;

-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+
| timestamp_value        |
+------------------------+
| 2008-12-25T15:30:00Z   |
+------------------------+

UNIX_SECONDS

UNIX_SECONDS(timestamp_expression)

설명

1970-01-01 00:00:00 UTC 이후의 초 수를 반환합니다. 나머지 단위는 자릅니다.

반환 데이터 유형

INT64

예시

SELECT UNIX_SECONDS(TIMESTAMP "2008-12-25 15:30:00+00") AS seconds;

+------------+
| seconds    |
+------------+
| 1230219000 |
+------------+

UNIX_MILLIS

UNIX_MILLIS(timestamp_expression)

설명

1970-01-01 00:00:00 UTC 이후의 밀리초 수를 반환합니다. 나머지 단위는 자릅니다.

반환 데이터 유형

INT64

예시

SELECT UNIX_MILLIS(TIMESTAMP "2008-12-25 15:30:00+00") AS millis;

+---------------+
| millis        |
+---------------+
| 1230219000000 |
+---------------+

UNIX_MICROS

UNIX_MICROS(timestamp_expression)

설명

1970-01-01 00:00:00 UTC 이후의 마이크로초 수를 반환합니다. 나머지 단위는 자릅니다.

반환 데이터 유형

INT64

예시

SELECT UNIX_MICROS(TIMESTAMP "2008-12-25 15:30:00+00") AS micros;

+------------------+
| micros           |
+------------------+
| 1230219000000000 |
+------------------+

PENDING_COMMIT_TIMESTAMP

PENDING_COMMIT_TIMESTAMP()

설명

DML INSERT 또는 UPDATE 문에서 PENDING_COMMIT_TIMESTAMP() 함수를 사용하여 대기 중인 커밋 타임스탬프, 즉 커밋 시 쓰기의 커밋 타임스탬프를 유형 TIMESTAMP의 열에 입력합니다.

Cloud Spanner SQL은 트랜잭션이 커밋될 때 커밋 타임스탬프를 선택합니다. PENDING_COMMIT_TIMESTAMP 함수는 적절한 유형의 열의 INSERT 또는 UPDATE 값으로만 사용할 수 있습니다. 이 쿼리는 SELECT에서 사용하거나 다른 스칼라 표현식에 대한 입력으로 사용할 수 없습니다.

반환 데이터 유형

TIMESTAMP

예시

다음 DML 문은 Singers 테이블의 LastUpdated 열을 커밋 타임스탬프로 업데이트합니다.

UPDATE Performances SET LastUpdated = PENDING_COMMIT_TIMESTAMP()
   WHERE SingerId=1 AND VenueId=2 AND EventDate="2015-10-21"

TIMESTAMP에 지원되는 형식 요소

달리 명시되지 않는 한, 형식 문자열을 사용하는 TIMESTAMP 함수는 다음 요소를 지원합니다.

형식 요소 설명
%A 요일 이름입니다.
%a 요일 이름의 약어입니다.
%B 월 이름입니다.
%b 또는 %h 월 이름의 약어입니다.
%C 10진수(00~99)로 표현한 세기(연도를 100으로 나누어 정수로 자른 것)입니다.
%c %a %b %e %T %Y 형식의 날짜 및 시간 표현입니다.
%D %m/%d/%y 형식으로 표현한 날짜입니다.
%d 한 달의 일을 10진수(01~31)로 표현한 것입니다.
%e 한 달의 일을 10진수(1~31)로 표현한 것입니다. 한 자릿수 앞에는 공백이 옵니다.
%F %Y-%m-%d 형식으로 표현한 날짜입니다.
%G ISO 8601 연도를 세기와 함께 10진수로 표현한 것입니다. 각 ISO 연도는 그레고리력 연도의 첫 번째 목요일 전 월요일에 시작됩니다. 그레고리력 연도와 ISO 연도가 달라질 수 있는 그레고리력 연도 경계 근처에서 %G와 %Y가 서로 다른 결과를 생성할 수 있습니다.
%g ISO 8601 연도를 세기 없이 10진수(00~99)로 표현한 것입니다. 각 ISO 연도는 그레고리력 연도의 첫 번째 목요일 전 월요일에 시작됩니다. 그레고리력 연도와 ISO 연도가 달라질 수 있는 그레고리력 연도 경계 근처에서 %g와 %y가 서로 다른 결과를 생성할 수 있습니다.
%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)로 표현한 것입니다.
%m 월을 10진수(01~12)로 표현한 것입니다.
%n 줄바꿈 문자입니다.
%P am 또는 pm입니다.
%p AM 또는 PM입니다.
%R %H:%M 형식으로 표현한 시간입니다.
%r AM/PM 표기법을 사용한 12시간제 시간입니다.
%S 초를 10진수(00~60)로 표현한 것입니다.
%s 1970-01-01 00:00:00 UTC 이후의 초 수입니다. 문자열에서 %s가 나타나는 위치에 상관없이 항상 다른 모든 형식 요소보다 우선합니다. 여러 개의 %s 요소가 나타날 경우, 마지막 요소가 우선합니다.
%T %H:%M:%S 형식으로 표현한 시간입니다.
%t 탭 문자입니다.
%U 한 해의 주 번호(일요일이 일주일의 첫 번째 날임)를 10진수(00~53)로 표현한 것입니다.
%u 요일(월요일이 일주일의 첫 번째 날임)을 10진수(1~7)로 표현한 것입니다.
%V ISO 8601 한 해의 주 번호(월요일이 일주일의 첫 번째 날임)를 10진수(01~53)로 표현한 것입니다. 새해에 1월 1일이 포함된 주의 일수가 4일 이상인 경우, 그 주가 첫 번째 주이고, 그렇지 않은 경우에는 그 주가 이전 연도의 53번째 주이고 그 다음 주가 첫 번째 주입니다.
%W 한 해의 주 번호(월요일이 일주일의 첫 번째 날임)를 10진수(00~53)로 표현한 것입니다.
%w 요일(일요일이 일주일의 첫 번째 날임)을 10진수(0~6)로 표현한 것입니다.
%X 시간을 HH:MM:SS 형식으로 표현한 것입니다.
%x 날짜를 MM/DD/YY 형식으로 표현한 것입니다.
%Y 연도를 세기와 함께 10진수로 표현한 것입니다.
%y 연도를 세기 없이 10진수(00~99)로 표현한 것입니다. 앞의 0 표기 여부는 선택할 수 있습니다. %C와 함께 사용할 수 있습니다. %C를 지정하지 않으면, 00~68년은 2000년대이고 69~99년은 1900년대입니다.
%Z 시간대 이름입니다.
%z +HHMM 또는 -HHMM 형식에서 본초자오선을 기준으로 한 오프셋입니다. 양의 값은 그리니치 동쪽 지역을 나타냅니다.
%% 단일 % 문자입니다.
%Ez RFC 3339 호환 숫자 시간대입니다(+HH:MM 또는 -HH:MM).
%E#S 초를 #자리 소수의 정밀도로 표현한 것입니다.
%E*S 초를 전체 소수 자릿수로 표현한 것입니다(리터럴 '*').
%E4Y 4자릿수 연도(0001~9999). %Y는 연도를 완전히 렌더링하는 데 필요한 만큼의 문자 수를 생성하니 유의하세요.

시간대 정의

특정 날짜 및 타임스탬프 함수를 사용하면 기본 시간대를 재정의하여 다른 시간대를 지정할 수 있습니다. 시간대 이름(예: America/Los_Angeles) 또는 UTC로부터의 시간대 오프셋(예: -08) 중 하나를 제공하여 시간대를 지정할 수 있습니다.

시간대 오프셋을 사용하는 경우 다음 형식을 사용합니다.

(+|-)H[H][:M[M]]

지정된 날짜 및 시간에 America/Los_Angeles의 시간대 오프셋이 -08이므로 다음 타임스탬프는 동일합니다.

SELECT UNIX_MILLIS(TIMESTAMP "2008-12-25 15:30:00 America/Los_Angeles") as millis;
SELECT UNIX_MILLIS(TIMESTAMP "2008-12-25 15:30:00-08:00") as millis;