{"id":13162,"date":"2026-09-26T12:45:00","date_gmt":"2026-09-26T10:45:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13162"},"modified":"2026-10-26T13:32:46","modified_gmt":"2026-10-26T12:32:46","slug":"tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/","title":{"rendered":"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung"},"content":{"rendered":"<p>Ein Tracking-Ereignis kann als Unix-Sekunden, Millisekunden, Mikrosekunden oder Text mit UTC-Versatz vorliegen. Der Versatz beschreibt den Abstand zu UTC: +02:00 bedeutet zwei Stunden voraus. Bei 12:00 UTC zeigt eine Uhr mit dem Versatz +02:00 bereits 14:00. Zus\u00e4tzlich speichern Berichte ein Kalenderdatum. Eine zuverl\u00e4ssige Umrechnung braucht drei Angaben: die Einheit, die Bedeutung des Feldes und die gew\u00fcnschte Zeitzone.<\/p>\n<p>Browserzeit, Containerstart, Ereigniszeit und Empfangszeit sind nicht automatisch derselbe Augenblick. Erst nach diesem Bedeutungsabgleich ist ein Vergleich der Zahlen sinnvoll. Die Stellenzahl liefert einen Hinweis, ersetzt aber keine Felddefinition.<\/p>\n<figure class=\"lw-diagram\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-13162-review-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" decoding=\"async\" alt=\"Zeitstempel: Einheit, Bedeutung, Zeitzone\"><figcaption>Klare Einheiten bestimmen die Zahlenumrechnung. Zeitzonenregeln bestimmen lokale Tagesgrenzen; die Feldbedeutung bleibt gesondert zu pr\u00fcfen.<\/figcaption><\/figure>\n<h2>1. F\u00fcnf h\u00e4ufige Darstellungen unterscheiden<\/h2>\n<p>Die folgenden Beispiele beziehen sich auf <code>2026-09-26T23:30:00Z<\/code>, in Berlin also auf den 27. September 2026 um 01:30 Uhr. Nur die ersten drei Formate z\u00e4hlen Einheiten seit der Unix-Epoche am 1. Januar 1970 um 00:00 UTC. Eine ISO-Darstellung schreibt Kalenderfelder; ein Datum allein bezeichnet \u00fcberhaupt keinen einzelnen Zeitpunkt.<\/p>\n<table><thead><tr><th>Darstellung<\/th><th>Beispiel<\/th><th>Bedeutung<\/th><\/tr><\/thead><tbody><tr><td>Sekunden<\/td><td>1790465400<\/td><td>Unix-Sekunden, etwa Meta event_time<\/td><\/tr><tr><td>Millisekunden<\/td><td>1790465400000<\/td><td>Unix-Millisekunden, etwa Date.now()<\/td><\/tr><tr><td>Mikrosekunden<\/td><td>1790465400000000<\/td><td>Unix-Mikrosekunden, etwa GA4 event_timestamp<\/td><\/tr><tr><td>ISO 8601 \/ RFC 3339<\/td><td>2026-09-27T01:30:00+02:00<\/td><td>Kalenderfelder mit ausdr\u00fccklichem Versatz<\/td><\/tr><tr><td>Kalenderdatum<\/td><td>20260927<\/td><td>Berliner Datum im Beispiel, kein Zeitpunkt<\/td><\/tr><\/tbody><\/table>\n<p><code>Date.now()<\/code> liefert Millisekunden der aktuellen Systemuhr. <code>gtm.start<\/code> im \u00fcblichen GTM-Einbau bezeichnet den Start des Containers, nicht den Zeitpunkt jedes sp\u00e4teren Klicks. Die Einheit kann korrekt sein, w\u00e4hrend die fachliche Zuordnung trotzdem falsch ist.<\/p>\n<p>Bei Zeitwerten aus dem Jahr 2026 sind zehn, 13 und 16 Ziffern typisch f\u00fcr Sekunden, Millisekunden und Mikrosekunden. Alte oder negative Zeitwerte, andere Epochen und gew\u00f6hnliche Kennnummern passen nicht in diese Erkennung. Auch acht Ziffern beweisen kein g\u00fcltiges Datum: <code>20260230<\/code> ist kein Kalendertag.<\/p>\n<h2>2. Mit ausdr\u00fccklich angegebener Einheit umrechnen<\/h2>\n<p>Die Funktion akzeptiert ganze Zahlen oder Zeichenketten aus Dezimalziffern mit optionalem Vorzeichen. Einheit und Wert werden getrennt \u00fcbergeben. Gleitkommazahlen, Boolesche Werte und Zeichenketten mit Nachkommastellen werden abgewiesen, damit keine unbemerkte Rundung entsteht. Nanosekunden sind nur zul\u00e4ssig, wenn eine exakte Abbildung auf Mikrosekunden m\u00f6glich ist.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"python\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Python<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-python\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> re\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">from<\/span> datetime <span class=\"cbb-keyword\">import<\/span> datetime, timedelta, timezone\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">EPOCH = <span class=\"cbb-function\">datetime<\/span>(<span class=\"cbb-number\">1970<\/span>, <span class=\"cbb-number\">1<\/span>, <span class=\"cbb-number\">1<\/span>, tzinfo=timezone.utc)\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">def<\/span> <span class=\"cbb-function\">epoch_to_utc<\/span>(value, unit):\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">isinstance<\/span>(value, bool):\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">TypeError<\/span>(<span class=\"cbb-string\">\"boolean is not a timestamp\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">isinstance<\/span>(value, str):\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> re.<span class=\"cbb-function\">fullmatch<\/span>(<span class=\"cbb-string\">r\"&#91;+-&#93;?&#91;0-9&#93;{1,20}\"<\/span>, value):\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">\"expected an integer string\"<\/span>)\n<\/span><span class=\"cbb-line\">        value = <span class=\"cbb-function\">int<\/span>(value)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">elif<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-function\">isinstance<\/span>(value, int):\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">TypeError<\/span>(<span class=\"cbb-string\">\"expected an integer or integer string\"<\/span>)\n<\/span><span class=\"cbb-line\">    factors = {<span class=\"cbb-string\">\"s\"<\/span>: <span class=\"cbb-number\">1_000_000<\/span>, <span class=\"cbb-string\">\"ms\"<\/span>: <span class=\"cbb-number\">1_000<\/span>, <span class=\"cbb-string\">\"us\"<\/span>: <span class=\"cbb-number\">1<\/span>}\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> unit == <span class=\"cbb-string\">\"ns\"<\/span>:\n<\/span><span class=\"cbb-line\">        micros, remainder = <span class=\"cbb-function\">divmod<\/span>(value, <span class=\"cbb-number\">1_000<\/span>)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> remainder:\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">\"nanoseconds would lose precision\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">elif<\/span> unit <span class=\"cbb-keyword\">in<\/span> factors:\n<\/span><span class=\"cbb-line\">        micros = value * factors&#91;unit&#93;\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">else<\/span>:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">\"unit must be s, ms, us or ns\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">try<\/span>:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">return<\/span> EPOCH + <span class=\"cbb-function\">timedelta<\/span>(microseconds=micros)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">except<\/span> OverflowError <span class=\"cbb-keyword\">as<\/span> exc:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">\"outside Python datetime range\"<\/span>) <span class=\"cbb-keyword\">from<\/span> exc\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">print<\/span>(<span class=\"cbb-function\">epoch_to_utc<\/span>(<span class=\"cbb-string\">\"1790465400000000\"<\/span>, <span class=\"cbb-string\">\"us\"<\/span>).<span class=\"cbb-function\">isoformat<\/span>())\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\"># 2026-09-26T23:30:00+00:00<\/span><\/span><\/code><\/pre><\/figure>\n<p>Das Ergebnis ist eine UTC-<code>datetime<\/code> mit Mikrosekundenaufl\u00f6sung. Die Funktion pr\u00fcft Typ, Einheit und den darstellbaren Python-Bereich, aber keine fachlichen Uploadfristen. Ob ein Datum zum Ereignis passt, braucht eine zus\u00e4tzliche Plausibilit\u00e4tspr\u00fcfung anhand der Quelle. Eine falsch deklarierte Einheit kann weiterhin ein technisch g\u00fcltiges, fachlich falsches Datum ergeben.<\/p>\n<p>Beispielsweise ergeben <code>1790465400<\/code> als Millisekunden den <code>1970-01-21T17:21:05.400Z<\/code>. Millisekunden irrt\u00fcmlich als Sekunden k\u00f6nnen einen sehr fernen Zeitpunkt oder einen Bereichsfehler erzeugen. Auch ein offensichtlich falsches Datum ist nicht harmlos, sobald eine Schnittstelle oder ein Bericht den Wert weiterverarbeitet.<\/p>\n<h2>3. GA4-Berichtstag und Zeitstempel getrennt betrachten<\/h2>\n<p>Das aktuelle GA4-Exportschema beschreibt <code>event_timestamp<\/code> als Empfangszeit bei Google Analytics in Mikrosekunden UTC. Mehrere Ereignisse derselben Anfrage k\u00f6nnen denselben Zeitstempel tragen. Der Wert ist deshalb weder ein eindeutiger Ereignisschl\u00fcssel noch ohne weitere Pr\u00fcfung eine genaue Klickzeit.<\/p>\n<p><code>event_date<\/code> ist das erfasste Datum im Format <code>YYYYMMDD<\/code> nach der hinterlegten Berichtszeitzone. Die t\u00e4glichen Tabellen hei\u00dfen <code>events_YYYYMMDD<\/code>. Ein aus dem Empfangszeitstempel berechneter lokaler Tag und das gespeicherte Ereignisdatum d\u00fcrfen nicht pauschal gleichgesetzt werden: Verz\u00f6gerungen, Bedeutung des jeweiligen Zeitfelds und \u00c4nderungen der Berichtszeitzone ben\u00f6tigen eine eigene Pr\u00fcfung.<\/p>\n<p>F\u00fcr den reinen Zeitzonenvergleich desselben Beispielzeitpunkts gilt:<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"plain\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Text<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-plain\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">UTC                2026-09-26T23:30:00Z\n<\/span><span class=\"cbb-line\">Europe\/Berlin      2026-09-27T01:30:00+02:00\n<\/span><span class=\"cbb-line\">UTC-Datum          2026-09-26\n<\/span><span class=\"cbb-line\">Berliner Datum     2026-09-27<\/span><\/code><\/pre><\/figure>\n<p>Berlin liegt im September zwei Stunden vor UTC, im Winter normalerweise eine Stunde. Ein lokaler Tagesbericht und ein UTC-Tagesbericht schneiden deshalb unterschiedliche Zeitr\u00e4ume aus. Die Differenz der Tagessummen ist nicht konstant: Am Anfang und Ende verschieben sich Ereignisse, deren Anzahl vom tats\u00e4chlichen Verkehr abh\u00e4ngt.<\/p>\n<p>F\u00fcr Vergleiche m\u00fcssen Tagesdefinition, Ereignisbegriff, Filter und Datenstand zusammenpassen. Ein Tabellenfilter w\u00e4hlt Exporttabellen; ein zus\u00e4tzlicher Zeitstempelfilter w\u00e4hlt Zeitpunkte innerhalb dieser Tabellen. Soll ein anderer Berichtstag rekonstruiert werden, m\u00fcssen auch m\u00f6gliche Randtabellen und versp\u00e4tete Daten ber\u00fccksichtigt werden. Ein <code>LIMIT<\/code> begrenzt lediglich die Ausgabe, nicht zuverl\u00e4ssig die gelesenen Bytes.<\/p>\n<h2>4. BigQuery-Funktionen passend zur Einheit verwenden<\/h2>\n<p><code>TIMESTAMP_SECONDS<\/code>, <code>TIMESTAMP_MILLIS<\/code> und <code>TIMESTAMP_MICROS<\/code> erwarten die jeweils benannte Einheit. Dieses Beispiel liest nur einige Felder einer ausdr\u00fccklich benannten Tagestabelle. Projekt, Dataset, Datum und Berichtszeitzone sind anzupassen.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  event_date,\n<\/span><span class=\"cbb-line\">  event_timestamp,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">TIMESTAMP_MICROS<\/span>(event_timestamp) <span class=\"cbb-keyword\">AS<\/span> timestamp_utc,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-type\">DATETIME<\/span>(<span class=\"cbb-function\">TIMESTAMP_MICROS<\/span>(event_timestamp),\n<\/span><span class=\"cbb-line\">           <span class=\"cbb-string\">'Europe\/Berlin'<\/span>) <span class=\"cbb-keyword\">AS<\/span> wall_clock_berlin,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-type\">DATE<\/span>(<span class=\"cbb-function\">TIMESTAMP_MICROS<\/span>(event_timestamp)) <span class=\"cbb-keyword\">AS<\/span> date_utc,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-type\">DATE<\/span>(<span class=\"cbb-function\">TIMESTAMP_MICROS<\/span>(event_timestamp),\n<\/span><span class=\"cbb-line\">       <span class=\"cbb-string\">'Europe\/Berlin'<\/span>) <span class=\"cbb-keyword\">AS<\/span> timestamp_date_berlin,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">FORMAT_TIMESTAMP<\/span>(<span class=\"cbb-string\">'%Y-%m-%dT%H:%M:%E6S%Ez'<\/span>,\n<\/span><span class=\"cbb-line\">                   <span class=\"cbb-function\">TIMESTAMP_MICROS<\/span>(event_timestamp),\n<\/span><span class=\"cbb-line\">                   <span class=\"cbb-string\">'Europe\/Berlin'<\/span>) <span class=\"cbb-keyword\">AS<\/span> text_with_offset,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">UNIX_SECONDS<\/span>(<span class=\"cbb-function\">TIMESTAMP_MICROS<\/span>(event_timestamp)) <span class=\"cbb-keyword\">AS<\/span> whole_seconds\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project_id.analytics_123456789.events_20260927`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">LIMIT<\/span> <span class=\"cbb-number\">10<\/span>;<\/span><\/code><\/pre><\/figure>\n<p><code>TIMESTAMP<\/code> bezeichnet einen Zeitpunkt. <code>DATETIME<\/code> enth\u00e4lt Kalenderdatum und Uhrzeit ohne Zeitzone. Die lokale Darstellung ist n\u00fctzlich, aber ohne zus\u00e4tzliche Angaben nicht eindeutig zur\u00fcckrechenbar. <code>%E6S<\/code> erh\u00e4lt sechs Nachkommastellen in der Textausgabe; <code>UNIX_SECONDS<\/code> rundet dagegen auf den Beginn der betreffenden Sekunde ab und verliert den Mikrosekundenanteil.<\/p>\n<p>Beim Einlesen eines Texts unterscheiden sich ein ausdr\u00fccklicher Versatz, eine ausdr\u00fccklich angegebene Zone und der UTC-Standard:<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">PARSE_TIMESTAMP<\/span>(<span class=\"cbb-string\">'%FT%T%Ez'<\/span>, <span class=\"cbb-string\">'2026-09-27T01:30:00+02:00'<\/span>) <span class=\"cbb-keyword\">AS<\/span> explicit_offset,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">PARSE_TIMESTAMP<\/span>(<span class=\"cbb-string\">'%FT%T'<\/span>, <span class=\"cbb-string\">'2026-09-27T01:30:00'<\/span>,\n<\/span><span class=\"cbb-line\">                  <span class=\"cbb-string\">'Europe\/Berlin'<\/span>) <span class=\"cbb-keyword\">AS<\/span> explicit_zone,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">PARSE_TIMESTAMP<\/span>(<span class=\"cbb-string\">'%FT%T'<\/span>, <span class=\"cbb-string\">'2026-09-27T01:30:00'<\/span>) <span class=\"cbb-keyword\">AS<\/span> utc_default;<\/span><\/code><\/pre><\/figure>\n<p>Die ersten beiden Ergebnisse bezeichnen hier <code>2026-09-26T23:30:00Z<\/code>, das dritte <code>2026-09-27T01:30:00Z<\/code>. Das sind zwei Stunden Unterschied. Eine Formatzeichenkette allein garantiert keine richtige Zeitzone; auch andere unterst\u00fctzte Parsingfunktionen ben\u00f6tigen klare Regeln f\u00fcr Einheit, Format und Zeitzone der Eingabe.<\/p>\n<h2>5. Sommerzeit erzeugt doppelte und fehlende Uhrzeiten<\/h2>\n<p>In <code>Europe\/Berlin<\/code> kommt am 25. Oktober 2026 die lokale Uhrzeit 02:30 zweimal vor: mit <code>+02:00<\/code> entspricht die Angabe 00:30 UTC, mit <code>+01:00<\/code> dagegen 01:30 UTC. Der Zonenname allein l\u00f6st diese Mehrdeutigkeit nicht. Ein bekannter Versatz oder eine ausdr\u00fccklich gespeicherte Auswahl des ersten beziehungsweise zweiten Durchlaufs ist erforderlich.<\/p>\n<p>Am 29. M\u00e4rz 2026 existiert 02:30 Berliner Ortszeit dagegen nicht, weil die Uhr von 02:00 auf 03:00 springt. Ein Parser kann solche Eingaben verschieben, ablehnen oder nach einer eigenen Regel behandeln. Eine stillschweigende Vorgabe ist keine Rekonstruktion des tats\u00e4chlichen Ereignisses.<\/p>\n<p>Diese beiden Kalendertage dauern 25 beziehungsweise 23 Stunden. Tagesgrenzen werden deshalb aus lokaler Mitternacht und der n\u00e4chsten lokalen Mitternacht berechnet, anschlie\u00dfend in UTC umgewandelt. Einfach 86.400 Sekunden zu addieren ist daf\u00fcr keine allgemeine Regel.<\/p>\n<p>F\u00fcr bereits eingetretene Ereignisse ist ein eindeutig bestimmter UTC-Zeitpunkt zweckm\u00e4\u00dfig. Die urspr\u00fcngliche Zeitzone und der Quelltext k\u00f6nnen zus\u00e4tzlich zur Nachvollziehbarkeit erhalten bleiben. UTC-Speicherung repariert jedoch keine zuvor falsch interpretierte Ortszeit.<\/p>\n<h2>6. Die Vorgaben der empfangenden Schnittstelle beachten<\/h2>\n<p>Meta CAPI verwendet f\u00fcr <code>event_time<\/code> Unix-Sekunden des tats\u00e4chlichen Ereignisses. <code>Date.now()<\/code> darf daher nicht unver\u00e4ndert als dieser Wert gesendet werden. Zul\u00e4ssiges Ereignisalter und Fehlerbehandlung geh\u00f6ren zur konkreten Schnittstelle und Ereignisquelle; eine erfolgreiche HTTP-Antwort ist allein kein Nachweis vollst\u00e4ndiger Verarbeitung oder Attribution. Fehlerobjekte, R\u00fcckmeldungen und Diagnosen sind zus\u00e4tzlich auszuwerten.<\/p>\n<p>F\u00fcr <code>ClickConversion.conversion_date_time<\/code> der Google Ads API verlangt die Dokumentation eine Zeitzonenangabe im Format <code>yyyy-mm-dd hh:mm:ss+|-hh:mm<\/code>. Das passende Beispiel lautet <code>2026-09-27 01:30:00+02:00<\/code>. Ein fehlender Versatz darf nicht pauschal als R\u00fcckfall auf die Kontozeitzone verstanden werden. Andere Uploadwege haben eigene Vorgaben.<\/p>\n<p>Bei Wiederholungen bleibt die tats\u00e4chliche Ereigniszeit ma\u00dfgeblich. Ein altes Ereignis durch \u201ejetzt\u201c zu ersetzen, um eine Frist zu umgehen, verf\u00e4lscht die Daten. Nach einer belegten Uhrkorrektur m\u00fcssen urspr\u00fcngliche Ereigniszeit, zul\u00e4ssiges Fenster und Duplikatschutz gemeinsam gepr\u00fcft werden.<\/p>\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n<h3>Sind 16-stellige Mikrosekunden in JavaScript immer exakt?<\/h3>\n<p>Nein. <code>Number.MAX_SAFE_INTEGER<\/code> betr\u00e4gt <code>9007199254740991<\/code>. Der Beispielwert aus 2026 liegt darunter, aber nicht jede 16-stellige Zahl. Die Grenze entspricht bei Mikrosekunden dem 5. Juni 2255 um 23:47:34.740991 UTC. <code>Date<\/code> arbeitet dennoch mit Millisekunden; eine sichere ganze Mikrosekundenzahl l\u00e4sst sich nicht unver\u00e4ndert als Date-Wert verwenden.<\/p>\n<h3>Was gilt f\u00fcr Nanosekunden und JSON?<\/h3>\n<p>Heutige Unix-Nanosekunden \u00fcberschreiten die sichere Ganzzahlgrenze von JavaScript. Manche Werte bleiben zuf\u00e4llig darstellbar, benachbarte Werte jedoch nicht. Eine Dezimalzeichenkette und anschlie\u00dfendes <code>BigInt<\/code> erhalten die Zahl. Eine bereits beim Einlesen als <code>Number<\/code> gerundete Zahl wird durch sp\u00e4tere BigInt-Umwandlung nicht repariert. Die Verringerung auf Millisekunden verliert bewusst Genauigkeit.<\/p>\n<h3>L\u00f6st UTC als Property-Zeitzone alle Tagesunterschiede?<\/h3>\n<p>UTC vereinheitlicht die gew\u00e4hlte Tagesgrenze, aber nicht unterschiedliche Bedeutungen der Zeitfelder, Verarbeitung oder Attribution. F\u00fcr einen Berliner Gesch\u00e4ftstag kann eine lokale Zeitzone weiterhin passend sein. Eine \u00c4nderung der Property-Zeitzone wirkt nur f\u00fcr zuk\u00fcnftige Daten und kann \u00dcbergangseffekte in Berichten erzeugen; die Historie wird nicht vollst\u00e4ndig neu berechnet.<\/p>\n<h3>Wie l\u00e4sst sich eine abweichende Serveruhr untersuchen?<\/h3>\n<p><code>timedatectl status<\/code> zeigt auf passenden Linux-Systemen den Synchronisationsstatus. Ein fehlender Abgleich beweist noch keine konkrete Abweichung. Beim verwendeten Zeitdienst sind zus\u00e4tzlich Offset, letzte erfolgreiche Synchronisation und Erreichbarkeit der Zeitquelle relevant. Ein HTTP-<code>Date<\/code>-Header ist nur eine grobe Gegenprobe: Cache, \u00dcbertragungsdauer, Sekundengenauigkeit und die antwortende Infrastruktur begrenzen die Aussage. Eine garantierte Genauigkeit von einer Sekunde folgt daraus nicht.<\/p>\n<\/div>\n<h2>Quellen und technische Dokumentation<\/h2><ul><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc3339.html\">RFC3339<\/a><\/li><li><a href=\"https:\/\/tc39.es\/ecma262\/multipage\/numbers-and-dates.html\">ECMAScript: Zahlen und Datumswerte<\/a><\/li><li><a href=\"https:\/\/docs.python.org\/3\/library\/datetime.html\">Python: datetime<\/a><\/li><li><a href=\"https:\/\/docs.python.org\/3\/library\/zoneinfo.html\">Python: zoneinfo<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846?hl=en\">GA4: Schema des BigQuery-Exports<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/timestamp_functions\">BigQuery: Zeitstempelfunktionen<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/google-ads\/api\/reference\/rpc\/v25\/ClickConversion\">Google Ads: ClickConversion<\/a><\/li><li><a href=\"https:\/\/raw.githubusercontent.com\/facebook\/facebook-nodejs-business-sdk\/main\/src\/objects\/serverside\/server-event.js\">Meta: ServerEvent SDK<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/9744165?hl=en\">GA4: Zeitzone der Property<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9110.html#name-date\">RFC9110: Date<\/a><\/li><li><a href=\"https:\/\/www.freedesktop.org\/software\/systemd\/man\/latest\/timedatectl.html\">systemd: timedatectl<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/datalayer\">GTM: Datenschicht<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Sekunden, Millisekunden und Mikrosekunden mit klarer Einheit umrechnen. Kalenderdaten von Zeitpunkten unterscheiden, GA4-Felder richtig vergleichen und Sommerzeitwechsel sowie JavaScript-Genauigkeitsgrenzen ber\u00fccksichtigen.<\/p>\n","protected":false},"author":1,"featured_media":30216,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[115],"tags":[92081,92214,92091,92235],"class_list":["post-13162","post","type-post","status-publish","format-standard","hentry","category-tutorials-de","tag-bigquery-de","tag-devops-de","tag-google-analytics-4-de","tag-tutorial-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Die f\u00fcnf Formate an der Ziffernzahl unterscheiden, in BigQuery umrechnen und die Tagesgrenze verstehen, an der event_date und event_timestamp auseinandergehen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Die f\u00fcnf Formate an der Ziffernzahl unterscheiden, in BigQuery umrechnen und die Tagesgrenze verstehen, an der event_date und event_timestamp auseinandergehen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-26T10:45:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T12:32:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll2-13160-13162.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung\",\"datePublished\":\"2026-09-26T10:45:00+00:00\",\"dateModified\":\"2026-10-26T12:32:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/\"},\"wordCount\":1297,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll2-13160-13162.png\",\"keywords\":[\"BigQuery\",\"DevOps\",\"Google Analytics 4\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/\",\"name\":\"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll2-13160-13162.png\",\"datePublished\":\"2026-09-26T10:45:00+00:00\",\"dateModified\":\"2026-10-26T12:32:46+00:00\",\"description\":\"Die f\u00fcnf Formate an der Ziffernzahl unterscheiden, in BigQuery umrechnen und die Tagesgrenze verstehen, an der event_date und event_timestamp auseinandergehen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll2-13160-13162.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll2-13160-13162.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung | Lukas Wojcik","description":"Die f\u00fcnf Formate an der Ziffernzahl unterscheiden, in BigQuery umrechnen und die Tagesgrenze verstehen, an der event_date und event_timestamp auseinandergehen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung | Lukas Wojcik","og_description":"Die f\u00fcnf Formate an der Ziffernzahl unterscheiden, in BigQuery umrechnen und die Tagesgrenze verstehen, an der event_date und event_timestamp auseinandergehen.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-26T10:45:00+00:00","article_modified_time":"2026-10-26T12:32:46+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll2-13160-13162.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung","datePublished":"2026-09-26T10:45:00+00:00","dateModified":"2026-10-26T12:32:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/"},"wordCount":1297,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll2-13160-13162.png","keywords":["BigQuery","DevOps","Google Analytics 4","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/","name":"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll2-13160-13162.png","datePublished":"2026-09-26T10:45:00+00:00","dateModified":"2026-10-26T12:32:46+00:00","description":"Die f\u00fcnf Formate an der Ziffernzahl unterscheiden, in BigQuery umrechnen und die Tagesgrenze verstehen, an der event_date und event_timestamp auseinandergehen.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll2-13160-13162.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll2-13160-13162.png","width":1200,"height":630,"caption":"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-die-funf-zeitstempelformate-eines-tracking-stapels-und-ihre-umrechnung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Die f\u00fcnf Zeitstempelformate eines Tracking-Stapels und ihre Umrechnung"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13162"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13162\/revisions"}],"predecessor-version":[{"id":27415,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13162\/revisions\/27415"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/30216"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}