Cloud Spanner SQL は、次の TIMESTAMP
関数をサポートしています。
注: オーバーフローが生じると、これらの関数によってランタイム エラーが返されます。結果の値は定義済みの日付とタイムスタンプの最小値 / 最大値によって制限されます。
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()
説明
括弧は省略可能です。この関数は、挿入されたうるう秒の前後 20 時間にわたってうるう秒を分散することで、うるう秒を処理します。CURRENT_TIMESTAMP()
は、連続し、明確であり、1 分あたり正確に 60 秒が含まれ、うるう秒に対して値を繰り返さない TIMESTAMP 値を生成します。
サポートされる入力型
該当なし
結果のデータ型
TIMESTAMP
例
SELECT CURRENT_TIMESTAMP() as now;
+--------------------------------+
| now |
+--------------------------------+
| 2020-06-02T23:58:40.347847393Z |
+--------------------------------+
EXTRACT
EXTRACT(part FROM timestamp_expression [AT TIME ZONE timezone])
説明
入力された timestamp_expression
から、指定された part
に対応する値を返します。この関数では、省略可能な timezone
パラメータを使用できます。タイムゾーンの指定方法については、タイムゾーンの定義をご覧ください。
指定できる part
値は次のとおりです。
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAYOFWEEK
DAY
DAYOFYEAR
WEEK
: 範囲 [0, 53] 内の日付の週番号を返します。週は日曜日から始まり、年の最初の日曜日より前の日付は 0 週目です。ISOWEEK
: ISO 8601 形式でdatetime_expression
の週番号を返します。ISOWEEK
は月曜日から始まります。戻り値は範囲 [1, 53] 内に存在します。各 ISO 年の最初のISOWEEK
は、グレゴリオ暦年の最初の木曜日より前の月曜日から始まります。MONTH
QUARTER
YEAR
ISOYEAR
: ISO 8601 形式の週番号が付いた年を返します。これはdate_expression
が属している週の木曜日が含まれるグレゴリオ暦年です。DATE
戻り値となる値の下位の期間は切り捨てられます。たとえば、秒数を抽出するとき、EXTRACT
はミリ秒とマイクロ秒の値を切り捨てます。
戻りデータの型
次の例外の場合以外は INT64 です。
part
はDATE
であり、DATE
オブジェクトを返します。
例
次の例では、EXTRACT
は DAY
時間部分に対応する値を返します。
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_date |
+----------------------+
| 2008-12-25T08:00:00Z |
+----------------------+
TIMESTAMP_ADD
TIMESTAMP_ADD(timestamp_expression, INTERVAL int64_expression date_part)
説明
タイムゾーンに関係なく、date_part
の int64_expression
単位をタイムスタンプに加算します。
TIMESTAMP_ADD
は、date_part
の次の値をサポートします。
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
。60MINUTE
と等価。DAY
。24HOUR
と等価。
戻りデータの型
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_part
の int64_expression
単位を減算します。
TIMESTAMP_SUB
は、date_part
の次の値をサポートします。
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
。60MINUTE
と等価。DAY
。24HOUR
と等価。
戻りデータの型
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)
説明
2 つの TIMESTAMP
オブジェクト(timestamp_expression_a
~timestamp_expression_b
)間に存在する、全体が指定された date_part
の間隔を示す数を返します。最初の TIMESTAMP
が 2 番目のオブジェクトよりも前の場合、出力は負になります。2 つの TIMESTAMP
オブジェクト間のナノ秒単位の差異が INT64
値をオーバーフローする場合など、計算が結果の型をオーバーフローする場合はエラーをスローします。
TIMESTAMP_DIFF
は、date_part
の次の値をサポートします。
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
。60MINUTE
と等価。DAY
。24HOUR
と等価。
戻りデータの型
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 |
+------------------------+------------------------+-------+
次の例では、最初のタイムスタンプが 2 番目のタイムスタンプより前であるため、負の出力になります。
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[, timezone])
説明
date_part
の粒度までタイムスタンプを切り詰めます。
TIMESTAMP_TRUNC
は、date_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
関数は、省略可能な timezone
パラメータをサポートしています。このパラメータは、次の date_parts
に適用されます。
MINUTE
HOUR
DAY
WEEK
ISOWEEK
MONTH
QUARTER
YEAR
ISOYEAR
このパラメータは、デフォルトのタイムゾーン America / Los_Angeles 以外のタイムゾーンを切り詰めオペレーションの一部として使用する場合に使用します。
TIMESTAMP
を MINUTE
あるいは HOUR
に切り詰める場合、TIMESTAMP_TRUNC
は指定された(あるいはデフォルトの)タイムゾーンでの TIMESTAMP
の常用時を計算し、そこから分と秒(HOUR に切り詰める場合)あるいは秒(MINUTE に切り詰める場合)をその TIMESTAMP
から減じます。これは、ほとんどの場合に直観に合う結果となりますが、夏時間の移行が時間境界に合っていない場合、その近辺で直観に合わない結果となります。
戻りデータの型
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
は、timestamp_expression
をグレゴリオ暦年ではなく、ISO 年の最初に切り詰めます。2015 年の最初の木曜日が 2015 年 1 月 1 日であったため、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[, timezone])
説明
タイムスタンプを指定された 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, timestamp_string[, timezone])
説明
タイムスタンプの文字列表現を TIMESTAMP
オブジェクトに変換します。
format_string
には、timestamp_string
のフォーマット方法を定義する形式設定要素が含まれます。timestamp_string
内の各要素については、対応する要素が format_string
内に存在することが必要です。format_string
内の各要素のロケーションは、timestamp_string
内の各要素のロケーションと一致する必要があります。
-- This works because elements on both sides match.
SELECT PARSE_TIMESTAMP("%a %b %e %I:%M:%S %Y", "Thu Dec 25 07:30:00 2008")
-- This doesn't work because the year element is in different locations.
SELECT PARSE_TIMESTAMP("%a %b %e %Y %I:%M:%S", "Thu Dec 25 07:30:00 2008")
-- This doesn't work because one of the year elements is missing.
SELECT PARSE_TIMESTAMP("%a %b %e %I:%M:%S", "Thu Dec 25 07:30:00 2008")
-- This works because %c can find all matching elements in timestamp_string.
SELECT PARSE_TIMESTAMP("%c", "Thu Dec 25 07:30:00 2008")
形式文字列は、%a
、%A
、%g
、%G
、%j
、%P
、%u
、%U
、%V
、%w
、%W
を除く大半の形式要素を完全にサポートします。
PARSE_TIMESTAMP
を使用する場合、次の点に注意してください。
- 指定されていないフィールド。指定されていないフィールドはすべて、
1970-01-01 00:00:00.0
から初期設定されます。この初期設定値は、関数のタイムゾーン引数によって指定されたタイムゾーンを使用します(存在する場合)。存在しない場合、初期設定値はデフォルトのタイムゾーンである America/Los_Angeles を使用します。たとえば、年が指定されていない場合、デフォルトで1970
に設定されます。 - 大文字と小文字の区別がない名前。
Monday
やFebruary
などの名前は、大文字と小文字が区別されません。 - 空白文字。形式設定文字列内の 1 つ以上の連続する空白文字は、タイムスタンプ文字列内のゼロ以上の連続する空白文字と同じです。また、タイムスタンプ文字列内の先頭および末尾の空白文字は、それらが形式設定文字列内にない場合でも常に許可されます。
- 形式設定の優先度。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()
関数を使用して、保留中の commit タイムスタンプ、つまり commit される時点での書き込みの commit タイムスタンプを TIMESTAMP
型の列に書き込みます。
トランザクションが commit されると、Cloud Spanner SQL が commit タイムスタンプを選択します。PENDING_COMMIT_TIMESTAMP
関数は、適切に型指定された列の INSERT または UPDATE の値としてのみ使用できます。SELECT では使用できません。また、他のスカラー式への入力としても使用できません。
戻りデータの型
TIMESTAMP
例
次の DML ステートメントは、commit タイムスタンプで 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 進数として表示される世紀(年を 100 で割って、整数値になるよう切り捨てる)(00~99)。 |
%c | %a %b %e %T %Y の形式で表現される日時。 |
%D | %m/%d/%y 形式の日付。 |
%d | 10 進数として表示される、月内の日付(01~31)。 |
%e | 10 進数として表示される、月内の日付(1~31)。1 桁の場合は前にスペースが入れられます。 |
%F | %Y-%m-%d 形式の日付。 |
%G | ISO 8601 の年。10 進数として表され、世紀の部分の数字が含まれます。各 ISO 年は、グレゴリオ暦年の最初の木曜日より前の月曜日から始まります。グレゴリオ暦年と ISO 年が同一ではない可能性があるグレゴリオ暦年の境界付近では、%G と %Y で異なる結果が生成されることがあります。 |
%g | ISO 8601 の年。10 進数として表され、世紀の部分の数字は含まれません(00~99)。各 ISO 年は、グレゴリオ暦年の最初の木曜日より前の月曜日から始まります。%g と %y は、グレゴリオ暦年と ISO 年が異なる可能性があるグレゴリオ暦年の境界付近では異なる結果になることがあります。 |
%H | 10 進数で表示される時間(24 時間制)(00~23)。 |
%I | 10 進数で表示される時間(12 時間制)(00~12)。 |
%j | 10 進数として表示される、年内の日付(001~366)。 |
%k | 10 進数として表示される時間(24 時間制)(0~23)。1 桁の場合は前にスペースが入れられます。 |
%l | 10 進数として表示される時間(12 時間制)(1~12)。1 桁の場合は前にスペースが入れられます。 |
%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 進数として表示される、年内の週番号(週の 1 日目が日曜日)(00~53)。 |
%u | 10 進数として表示される曜日(週の 1 日目が月曜日)(1~7)。 |
%V | 1 年の中での ISO 8601 の週番号(週の 1 日目は月曜日)。10 進数として表されます(01~53)。1 月 1 日を含む週に新しい年の 4 日以上の日数がある場合、その週が week 1 になります。そうでない場合、その週は前の年の week 53 になり、その次の週が新しい年の week 1 になります。 |
%W | 10 進数として表示される、年内の週番号(週の 1 日目が月曜日)(00~53)。 |
%w | 10 進数として表示される曜日(週の 1 日目が日曜日)(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;