Cloud Spanner SQL unterstützt die folgenden TIMESTAMP
-Funktionen.
HINWEIS: Diese Funktionen geben bei Überlauf einen Laufzeitfehler zurück. Ergebniswerte werden durch die definierten Mindest-/Maximalwerte von Datum und Zeitstempel begrenzt.
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()
Beschreibung
Klammern sind optional. Diese Funktion verarbeitet Schaltsekunden, indem sie über ein Fenster von 20 Stunden um die eingefügten Schaltsekunden herum verteilt werden.
CURRENT_TIMESTAMP()
erzeugt einen TIMESTAMP-Wert, der kontinuierlich und eindeutig ist, genau 60 Sekunden pro Minute hat und keine Werte über die Schaltsekunde wiederholt.
Unterstützte Eingabetypen
Nicht zutreffend
Datentyp des Ergebnisses
TIMESTAMP
Beispiel
SELECT CURRENT_TIMESTAMP() as now;
+--------------------------------+
| now |
+--------------------------------+
| 2020-06-02T23:58:40.347847393Z |
+--------------------------------+
EXTRACT
EXTRACT(part FROM timestamp_expression [AT TIME ZONE timezone])
Beschreibung
Gibt einen Wert zurück, der dem angegebenen part
aus einer bereitgestellten timestamp_expression
entspricht. Diese Funktion unterstützt den optionalen Parameter timezone
. Informationen zur Angabe einer Zeitzone finden Sie unter Zeitzonendefinitionen.
Zulässige part
-Werte:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAYOFWEEK
DAY
DAYOFYEAR
WEEK
: gibt die Kalenderwoche des Datums im Bereich [0, 53] zurück. Wochen beginnen mit Sonntag und Datumsangaben vor dem ersten Sonntag des Jahres liegen in Woche 0.ISOWEEK
: gibt die ISO 8601-Wochennummer vondatetime_expression
zurück.ISOWEEK
-Wochen beginnen am Montag. Rückgabewerte liegen im Bereich [1, 53]. Die ersteISOWEEK
-Woche eines ISO-Jahres beginnt am Montag vor dem ersten Donnerstag des gregorianischen Kalenderjahres.MONTH
QUARTER
YEAR
ISOYEAR
: gibt das Kalenderjahr mit ISO 8601-Wochennummerierung zurück. Das entspricht dem gregorianischen Kalenderjahr mit dem Donnerstag der Woche, zu derdate_expression
gehört.DATE
Bei den zurückgegebenen Werten werden jeweils die kleineren Zeiträume weggekürzt. Wenn Sie z. B. Sekunden extrahieren, werden durch EXTRACT
die Millisekunden- und Mikrosekundenwerte entfernt.
Rückgabedatentyp
INT64, außer in folgenden Fällen:
- Wenn
part
DATE
ist, wird einDATE
-Objekt zurückgegeben.
Beispiele
Im folgenden Beispiel gibt EXTRACT
einen Wert zurück, der dem Datumsteil DAY
entspricht.
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 |
+-------------+--------------------+
Im folgenden Beispiel gibt EXTRACT
Werte zurück, die verschiedenen Datumsteilen aus einer Spalte mit Zeitstempeln entsprechen.
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])
Beschreibung
Wandelt einen timestamp_expression
in einen STRING-Datentyp um. Unterstützt einen optionalen Parameter zur Angabe einer Zeitzone. Informationen zur Angabe einer Zeitzone finden Sie unter Zeitzonendefinitionen.
Rückgabedatentyp
STRING
Beispiel
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])
Beschreibung
string_expression[, timezone]
: wandelt einen STRING-Ausdruck in einen TIMESTAMP-Datentyp um.string_expression
muss ein Zeitstempelliteral enthalten. Wennstring_expression
eine Zeitzone im Zeitstempelliteral enthält, fügen Sie kein explizitestimezone
-Argument ein.date_expression[, timezone]
: wandelt ein DATE-Objekt in einen TIMESTAMP-Datentyp um.
Diese Funktion unterstützt einen optionalen Parameter zur Angabe einer Zeitzone. Wenn keine Zeitzone angegeben ist, wird die Standardzeitzone "America/Los_Angeles" verwendet.
Rückgabedatentyp
TIMESTAMP
Beispiele
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)
Beschreibung
Addiert zum Zeitstempel unabhängig von der Zeitzone int64_expression
date_part
-Einheiten hinzu.
TIMESTAMP_ADD
unterstützt die folgenden Werte für date_part
:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
. Entspricht dem Wert 60 fürMINUTE
.DAY
. Entspricht dem Wert 24 fürHOUR
.
Rückgabedatentypen
TIMESTAMP
Beispiel
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)
Beschreibung
Subtrahiert vom Zeitstempel unabhängig von der Zeitzone int64_expression
date_part
-Einheiten.
TIMESTAMP_SUB
unterstützt die folgenden Werte für date_part
:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
. Entspricht dem Wert 60 fürMINUTE
.DAY
. Entspricht dem Wert 24 fürHOUR
.
Rückgabedatentyp
TIMESTAMP
Beispiel
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)
Beschreibung
Gibt die Anzahl der gesamten angegebenen date_part
-Intervalle zwischen zwei TIMESTAMP
-Objekten (timestamp_expression_a
- timestamp_expression_b
) zurück. Wenn der erste TIMESTAMP
vor dem zweiten liegt, ist die Ausgabe negativ. Ein Fehler wird ausgegeben, wenn die Berechnung einen Überlauf des Ergebnistyps verursacht, z. B. wenn die Differenz in Nanosekunden zwischen den beiden TIMESTAMP
-Objekten einen Überlauf für einen INT64
-Wert verursachen würde.
TIMESTAMP_DIFF
unterstützt die folgenden Werte für date_part
:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
. Entspricht dem Wert 60 fürMINUTE
.DAY
. Entspricht dem Wert 24 fürHOUR
.
Rückgabedatentyp
INT64
Beispiel
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 |
+------------------------+------------------------+-------+
Im folgenden Beispiel liegt der erste Zeitstempel vor dem zweiten, was zu einer negativen Ausgabe führt.
SELECT TIMESTAMP_DIFF(TIMESTAMP "2018-08-14", TIMESTAMP "2018-10-14", DAY);
+---------------+
| negative_diff |
+---------------+
| -61 |
+---------------+
In diesem Beispiel ist das Ergebnis 0, da nur die Anzahl der gesamten angegebenen HOUR
-Intervalle enthalten ist.
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])
Beschreibung
Kürzt einen Zeitstempel auf die Granularität von date_part
.
TIMESTAMP_TRUNC
unterstützt die folgenden Werte für date_part
:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
WEEK
ISOWEEK
: kürzttimestamp_expression
auf die vorhergehende Wochengrenze nach ISO 8601.ISOWEEK
s beginnen mit dem Montag. Die ersteISOWEEK
eines ISO-Jahres enthält den ersten Donnerstag des entsprechenden gregorianischen Kalenderjahres. Jededate_expression
vor diesem Datum wird auf den Montag davor gekürzt.MONTH
QUARTER
YEAR
ISOYEAR
: kürzttimestamp_expression
auf die vorhergehende Jahresgrenze gemäß der ISO 8601-Wochennummerierung. Die ISO-Jahresgrenze ist der Montag der ersten Woche, in der der Donnerstag in das entsprechende gregorianische Kalenderjahr fällt.
Die Funktion TIMESTAMP_TRUNC
unterstützt den optionalen Parameter timezone
. Dieser Parameter gilt für die folgenden date_parts
:
MINUTE
HOUR
DAY
WEEK
ISOWEEK
MONTH
QUARTER
YEAR
ISOYEAR
Verwenden Sie diesen Parameter, wenn eine andere Zeitzone als die Standardzeitzone "America/Los_Angeles" als Teil der Kürzung verwendet werden soll.
Beim Kürzen vom TIMESTAMP
auf MINUTE
oder HOUR
gibt TIMESTAMP_TRUNC
die amtliche Zeit von TIMESTAMP
in der angegebenen (oder standardmäßigen) Zeitzone an und subtrahiert die Minuten und Sekunden (beim Kürzen auf HOUR) oder die Sekunden (beim Kürzen auf MINUTE) von diesem TIMESTAMP
-Wert.
Dadurch ergeben sich in den meisten Fällen intuitive Ergebnisse. Bei zeitlicher Nähe zu Sommerzeitübergängen ohne Stundenangleichung sind sie jedoch nicht intuitiv.
Rückgabedatentyp
TIMESTAMP
Beispiele
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 |
+------------------------+------------------------+
Im folgenden Beispiel liegt der ursprüngliche timestamp_expression
im gregorianischen Kalenderjahr 2015. TIMESTAMP_TRUNC
mit dem Datumsteil ISOYEAR
kürzt den timestamp_expression
jedoch bis zum Anfang des ISO-Jahres und nicht des gregorianischen Kalenderjahres. Der erste Donnerstag des Kalenderjahres 2015 fiel auf den 01.01.2015. Deshalb beginnt das ISO-Jahr 2015 mit dem Montag davor am 29.12.2014.
Entsprechend fällt die ISO-Jahresgrenze vor timestamp_expression
2015-06-15 00:00:00+00 auf den 29.12.2014.
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])
Beschreibung
Formatiert einen Zeitstempel gemäß dem angegebenen format_string
-Wert.
Unter Unterstützte Formatelemente für TIMESTAMP ist eine Liste mit Formatelementen aufgeführt, die von dieser Funktion unterstützt werden.
Rückgabedatentyp
STRING
Beispiel
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])
Beschreibung
Wandelt die Stringdarstellung eines Zeitstempels in ein TIMESTAMP
-Objekt um.
format_string
enthält die Formatelemente, die definieren, wie timestamp_string
formatiert ist. Jedem Element in timestamp_string
muss ein Element in format_string
entsprechen. Die Position jedes Elements in format_string
muss mit der Position der einzelnen Elemente in timestamp_string
übereinstimmen.
-- 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")
Der Formatstring unterstützt mit Ausnahme von %a
, %A
, %g
, %G
, %j
, %P
, %u
, %U
, %V
, %w
und %W
die meisten Formatelemente vollständig.
Beachten Sie bei Verwendung von PARSE_TIMESTAMP
Folgendes:
- Nicht angegebene Felder: Jedes nicht angegebene Feld wird ab
1970-01-01 00:00:00.0
initialisiert. Dieser Initialisierungswert verwendet die durch das Zeitzonenargument der Funktion angegebene Zeitzone, falls vorhanden. Wenn das Argument nicht vorhanden ist, verwendet der Initialisierungswert die Standardzeitzone "America/Los_Angeles". Sollte beispielsweise das Jahr nicht angegeben sein, wird standardmäßig1970
verwendet usw. - Groß-/Kleinschreibung in Namen: Bei Namen wie
Monday
,February
usw. wird die Groß-/Kleinschreibung nicht berücksichtigt. - Leerraum. Ein oder mehrere aufeinanderfolgende Leerräume im Formatstring stimmen mit null oder mehreren aufeinanderfolgenden Leerräumen im Zeitstempelstring überein. Darüber hinaus sind voran- und nachgestellte Leerräume im Zeitstempelstring immer erlaubt – auch wenn sie nicht im Formatstring vorhanden sind.
- Formatvorrang. Wenn zwei oder mehr Formatelemente überlappende Informationen haben (
%F
und%Y
beeinflussen z. B. beide das Jahr), überschreibt im Allgemeinen das letzte Format alle vorherigen Formate, mit einigen Ausnahmen (siehe Beschreibung von%s
,%C
und%y
).
Rückgabedatentyp
TIMESTAMP
Beispiel
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)
Beschreibung
Interpretiert int64_expression
als Anzahl der Sekunden seit 01.01.1970 00:00:00 UTC.
Rückgabedatentyp
TIMESTAMP
Beispiel
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)
Beschreibung
Interpretiert int64_expression
als Anzahl der Millisekunden seit 01.01.1970 00:00:00 UTC.
Rückgabedatentyp
TIMESTAMP
Beispiel
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)
Beschreibung
Interpretiert int64_expression
als Anzahl der Mikrosekunden seit 01.01.1970 00:00:00 UTC.
Rückgabedatentyp
TIMESTAMP
Beispiel
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)
Beschreibung
Gibt die Anzahl der Sekunden seit 01.01.1970 00:00:00 UTC zurück. Nachkommastellen werden abgeschnitten.
Rückgabedatentyp
INT64
Beispiel
SELECT UNIX_SECONDS(TIMESTAMP "2008-12-25 15:30:00+00") AS seconds;
+------------+
| seconds |
+------------+
| 1230219000 |
+------------+
UNIX_MILLIS
UNIX_MILLIS(timestamp_expression)
Beschreibung
Gibt die Anzahl der Millisekunden seit 01.01.1970 00:00:00 UTC zurück. Nachkommastellen werden abgeschnitten.
Rückgabedatentyp
INT64
Beispiel
SELECT UNIX_MILLIS(TIMESTAMP "2008-12-25 15:30:00+00") AS millis;
+---------------+
| millis |
+---------------+
| 1230219000000 |
+---------------+
UNIX_MICROS
UNIX_MICROS(timestamp_expression)
Beschreibung
Gibt die Anzahl der Mikrosekunden seit 01.01.1970 00:00:00 UTC zurück. Nachkommastellen werden abgeschnitten.
Rückgabedatentyp
INT64
Beispiel
SELECT UNIX_MICROS(TIMESTAMP "2008-12-25 15:30:00+00") AS micros;
+------------------+
| micros |
+------------------+
| 1230219000000000 |
+------------------+
PENDING_COMMIT_TIMESTAMP
PENDING_COMMIT_TIMESTAMP()
Beschreibung
Verwenden Sie die Funktion PENDING_COMMIT_TIMESTAMP()
in einer DML-Anweisung vom Typ INSERT
oder UPDATE
, um den ausstehenden Commit-Zeitstempel, d. h. den Commit-Zeitstempel des Schreibvorgangs, in eine Spalte vom Typ TIMESTAMP
zu schreiben.
Cloud Spanner SQL wählt den Commit-Zeitstempel aus, wenn der Commit der Transaktion ausgeführt wird. Die PENDING_COMMIT_TIMESTAMP
-Funktion kann nur als Wert für INSERT oder UPDATE einer entsprechend typisierten Spalte verwendet werden. Er kann nicht in SELECT oder als Eingabe für einen anderen skalaren Ausdruck verwendet werden.
Rückgabedatentyp
TIMESTAMP
Beispiel
Mit der folgenden DML-Anweisung wird der Commit-Zeitstempel in die Spalte LastUpdated
in der Tabelle "Singers" geschrieben.
UPDATE Performances SET LastUpdated = PENDING_COMMIT_TIMESTAMP()
WHERE SingerId=1 AND VenueId=2 AND EventDate="2015-10-21"
Unterstützte Formatelemente für TIMESTAMP
Wenn nicht anders angegeben, unterstützen TIMESTAMP-Funktionen, die Formatstrings verwenden, folgende Elemente:
Formatelement | Beschreibung |
%A | Der vollständige Wochentagname. |
%a | Der abgekürzte Wochentagname. |
%B | Der vollständige Monatsname. |
%b oder %h | Der abgekürzte Monatsname. |
%C | Das Jahrhundert (ein Jahr geteilt durch 100 und gekürzt auf eine Ganzzahl) als Dezimalzahl (00–99). |
%c | Die Datums- und Uhrzeitdarstellung im Format %a %b %e %T %Y. |
%D | Das Datum im Format %m/%d/%y. |
%d | Der Tag des Monats als Dezimalzahl (01–31). |
%e | Der Tag des Monats als Dezimalzahl (1–31); den einzelnen Ziffern ist ein Leerzeichen vorangestellt. |
%F | Das Datum im Format %Y-%m-%d. |
%G | Das Jahr nach ISO 8601 mit Jahrhundert als Dezimalzahl. Jedes ISO-Jahr beginnt mit dem Montag vor dem ersten Donnerstag des gregorianischen Kalenderjahres. Beachten Sie, dass %G und %Y nahe den gregorianischen Jahresgrenzen unterschiedliche Ergebnisse erzeugen können, wobei das gregorianische Jahr und ISO-Jahr voneinander abweichen können. |
%g | Das Jahr nach ISO 8601 ohne Jahrhundert als Dezimalzahl (00–99). Jedes ISO-Jahr beginnt mit dem Montag vor dem ersten Donnerstag des gregorianischen Kalenderjahres. Beachten Sie, dass %g und %y nahe den gregorianischen Jahresgrenzen unterschiedliche Ergebnisse erzeugen können, wobei das gregorianische Jahr und ISO-Jahr voneinander abweichen können. |
%H | Die Stunde (24-Stunden-Anzeige) als Dezimalzahl (00–23). |
%I | Die Stunde (12-Stunden-Anzeige) als Dezimalzahl (01–12). |
%j | Der Tag des Jahres als Dezimalzahl (001–366). |
%k | Die Stunde (24-Stunden-Anzeige) als Dezimalzahl (0–23); den einzelnen Ziffern ist ein Leerzeichen vorangestellt. |
%l | Die Stunde (12-Stunden-Anzeige) als Dezimalzahl (1–12); den einzelnen Ziffern ist ein Leerzeichen vorangestellt. |
%M | Die Minute als Dezimalzahl (00–59). |
%m | Der Monat als Dezimalzahl (01–12). |
%n | Ein Zeilenumbruch. |
%P | Entweder "am" oder "pm". |
%p | Entweder "AM" oder "PM". |
%R | Die Zeit im Format %H:%M. |
%r | Die 12-Stunden-Anzeige mit AM/PM-Notation. |
%S | Die Sekunde als Dezimalzahl (00–60). |
%s | Die Anzahl der Sekunden seit 01.01.1970 00:00:00 UTC. Überschreibt immer alle anderen Formatelemente, unabhängig davon, wo %s im String angezeigt wird. Wenn mehrere %s Elemente angezeigt werden, dann hat das letzte Element Vorrang. |
%T | Die Zeit im Format %H:%M:%S. |
%t | Ein Tab-Zeichen. |
%U | Die Wochennummer des Jahres (Sonntag als erster Tag der Woche) als Dezimalzahl (00–53). |
%u | Der Wochentag (Montag als erster Tag der Woche) als Dezimalzahl (1–7). |
%V | Die ISO 8601-Wochennummer des Jahres (Montag als erster Tag der Woche) als Dezimalzahl (01–53). Wenn die Woche mit dem 1. Januar mindestens vier Tage im neuen Jahr hat, dann ist sie Woche 1. Andernfalls ist sie Woche 53 des Vorjahres und die nächste Woche ist Woche 1. |
%W | Die Wochennummer des Jahres (Montag als erster Tag der Woche) als Dezimalzahl (00–53). |
%w | Der Wochentag (Sonntag als erster Tag der Woche) als Dezimalzahl (0–6). |
%X | Die Zeitdarstellung im HH:MM:SS-Format. |
%x | Die Datumsdarstellung im MM/TT/JJ-Format. |
%Y | Das Jahr mit Jahrhundert als Dezimalzahl. |
%y | Das Jahr ohne Jahrhundert als Dezimalzahl (00–99), mit einer optionalen vorangestellten Null. Kann mit %C gemischt werden. Wenn %C nicht angegeben ist, sind die Jahre 00–68 2000er, während die Jahre 69–99 1900er sind. |
%Z | Der Zeitzonenname. |
%z | Der Versatz von der Nullmeridian-Zeitzone je nach Bedarf im Format +HHMM oder -HHMM, wobei die positiven Werte Orte östlich von Greenwich darstellen. |
%% | Ein einzelnes %-Zeichen. |
%Ez | RFC 3339-kompatible numerische Zeitzone (+HH:MM oder -HH:MM). |
%E#S | Sekunden mit #-Ziffern in Bruchgenauigkeit. |
%E*S | Sekunden mit vollständiger Bruchgenauigkeit (ein literales "*"). |
%E4Y | Jahre mit vier Ziffern (von 0001 bis 9999). Beachten Sie, dass %Y so viele Zeichen produziert, wie nötig sind, um das Jahr komplett darzustellen. |
Zeitzonendefinitionen
Mit bestimmten Datums- und Zeitstempelfunktionen kann die Standardzeitzone durch eine andere Zeitzone zu überschrieben werden. Sie geben eine Zeitzone entweder durch den Zeitzonennamen (z. B. America/Los_Angeles
) oder durch den Zeitzonenversatz von UTC an (z. B. -08).
Wenn Sie sich für einen Zeitzonenversatz entscheiden, verwenden Sie folgendes Format:
(+|-)H[H][:M[M]]
Die folgenden Zeitstempel sind äquivalent, da der Zeitzonenversatz für America/Los_Angeles
den Wert -08
für das angegebene Datum und die angegebene Uhrzeit hat.
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;