{"id":13164,"date":"2026-09-26T18:25:00","date_gmt":"2026-09-26T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13164"},"modified":"2026-09-25T15:07:51","modified_gmt":"2026-09-25T13:07:51","slug":"tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/","title":{"rendered":"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie"},"content":{"rendered":"<p>Jedno klikni\u0119cie wytwarza znacznik czasu w przegl\u0105darce, kolejny w mened\u017cerze tag\u00f3w, trzeci w eksporcie analitycznym i czwarty w platformie reklamowej, do kt\u00f3rej zostaje przekazany. Wszystkie cztery opisuj\u0105 t\u0119 sam\u0105 chwil\u0119. \u017baden nie jest zapisany tak samo.<\/p>\n<p>Najwi\u0119ksza cz\u0119\u015b\u0107 zamieszania rozwi\u0105zuje si\u0119 przez policzenie cyfr. Cz\u0119\u015b\u0107 pozosta\u0142a to granica dnia &#8211; a t\u0119 warto pozna\u0107, zanim jeden raport zostanie zestawiony z drugim.<\/p>\n<figure class=\"lw-diagram\">\n<img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/zeitstempel-umrechnen-pl.png?v=20260925\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\"\n     alt=\"Pi\u0119\u0107 format\u00f3w znacznika czasu z przyk\u0142adow\u0105 warto\u015bci\u0105 i liczb\u0105 cyfr, pod spodem o\u015b czasu ze zdarzeniem o wp\u00f3\u0142 do drugiej w nocy, kt\u00f3re zale\u017cnie od konwencji przypada na dwie r\u00f3\u017cne daty\"><figcaption>Ta sama chwila w pi\u0119ciu zapisach. O\u015b poni\u017cej pokazuje przypadek, w kt\u00f3rym dwa z nich nie zgadzaj\u0105 si\u0119 co do daty.<\/figcaption><\/figure>\n<h2>Pi\u0119\u0107 format\u00f3w spotykaj\u0105cych si\u0119 w jednym stosie<\/h2>\n<p>Wszystkie licz\u0105 od tego samego punktu zerowego: p\u00f3\u0142nocy 1 stycznia 1970 roku w UTC. R\u00f3\u017cni\u0105 si\u0119 jednostk\u0105 i opakowaniem.<\/p>\n<table style=\"width:100%;border-collapse:collapse;table-layout:auto;\">\n<thead>\n<tr>\n<th style=\"white-space:nowrap;vertical-align:top;\">Format<\/th>\n<th style=\"white-space:nowrap;vertical-align:top;\">Przyk\u0142ad<\/th>\n<th style=\"vertical-align:top;\">Gdzie wyst\u0119puje<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Sekundy<\/td>\n<td>1790465400<\/td>\n<td>Meta CAPI event_time, wi\u0119kszo\u015b\u0107 interfejs\u00f3w REST<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Milisekundy<\/td>\n<td>1790465400000<\/td>\n<td>Date.now(), gtm.start, wi\u0119kszo\u015b\u0107 JavaScriptu<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Mikrosekundy<\/td>\n<td>1790465400000000<\/td>\n<td>GA4 BigQuery event_timestamp<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">ISO 8601<\/td>\n<td>2026-09-27T01:30:00+02:00<\/td>\n<td>Dzienniki, API Search Console, wi\u0119kszo\u015b\u0107 eksport\u00f3w<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Sama data<\/td>\n<td>20260927<\/td>\n<td>GA4 event_date, sufiks tabeli BigQuery<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Trzy pierwsze s\u0105 jednoznaczne: to liczba jednostek od sta\u0142ego punktu i nie nios\u0105 strefy czasowej, bo jej nie potrzebuj\u0105. Czwarty jest jednoznaczny, dop\u00f3ki niesie przesuni\u0119cie &#8211; to <code>+02:00<\/code> na ko\u0144cu czyni z niego chwil\u0119, a nie opis.<\/p>\n<p>Pi\u0105ty jest innego rodzaju. Data bez godziny nie jest chwil\u0105, lecz zakresem dwudziestu czterech godzin &#8211; a kt\u00f3re to dwadzie\u015bcia cztery godziny, zale\u017cy od strefy czasowej, kt\u00f3rej w warto\u015bci nigdzie nie ma.<\/p>\n<h2>Rozr\u00f3\u017cnienie przez policzenie cyfr<\/h2>\n<p>Dla liczby z dziennika, eksportu albo zawarto\u015bci rozstrzyga d\u0142ugo\u015b\u0107.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>10 cyfr   sekundy       1790465400          do roku 2286\n13 cyfr   milisekundy   1790465400000\n16 cyfr   mikrosekundy  1790465400000000\n 8 cyfr   data          20260927            wcale nie chwila<\/code><\/pre>\n<p>Z pomini\u0119cia tego bior\u0105 si\u0119 dwa b\u0142\u0119dy, a oba daj\u0105 wynik wygl\u0105daj\u0105cy wiarygodnie. Odczytanie milisekund jako sekund przesuwa dat\u0119 do roku 58 707 &#8211; b\u0142\u0105d oczywisty, a wi\u0119c nieszkodliwy. Odczytanie sekund jako milisekund przesuwa j\u0105 na 21 stycznia 1970, co oczywiste wcale nie jest, i pojawia si\u0119 w raporcie jako male\u0144ki s\u0142upek na lewym skraju ka\u017cdego wykresu.<\/p>\n<p>Zabezpieczenie kosztuje trzy linie i op\u0142aca si\u0119 wsz\u0119dzie tam, gdzie warto\u015b\u0107 przychodzi z zewn\u0105trz.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>def zu_sekunden(wert):\n    z = len(str(int(wert)))\n    if z == 16: return int(wert) \/ 1_000_000\n    if z == 13: return int(wert) \/ 1_000\n    if z == 10: return int(wert)\n    raise ValueError(f\"nieznany format czasu o {z} cyfrach: {wert}\")<\/code><\/pre>\n<h2>Dzie\u0144, kt\u00f3ry nie jest tym samym dniem<\/h2>\n<p>Eksport GA4 do BigQuery niesie zar\u00f3wno chwil\u0119, jak i dat\u0119, a oba trzymaj\u0105 si\u0119 r\u00f3\u017cnych konwencji.<\/p>\n<p><code>event_timestamp<\/code> to mikrosekundy od epoki, a wi\u0119c UTC. <code>event_date<\/code> to ci\u0105g postaci <code>YYYYMMDD<\/code> w strefie raportowania us\u0142ugi. Przy us\u0142udze ustawionej na Berlin ka\u017cde zdarzenie mi\u0119dzy p\u00f3\u0142noc\u0105 a drug\u0105 w nocy czasu lokalnego niesie wi\u0119c dat\u0119 o dzie\u0144 dalsz\u0105 ni\u017c to, co m\u00f3wi w UTC jego w\u0142asny znacznik czasu.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>Zdarzenie 27.09.2026 o godzinie 01:30 czasu berlinskiego\n\nevent_date                                          20260927\nDATE(TIMESTAMP_MICROS(event_timestamp))           2026-09-26\nDATE(TIMESTAMP_MICROS(event_timestamp),\n     \"Europe\/Berlin\")                             2026-09-27<\/code><\/pre>\n<p>To nie jest usterka i nie da si\u0119 tego wy\u0142\u0105czy\u0107. To pow\u00f3d, dla kt\u00f3rego dwa zapytania po tej samej tabeli mog\u0105 da\u0107 r\u00f3\u017cne sumy dzienne &#8211; a r\u00f3\u017cnica ma zawsze ten sam rozmiar: zdarzenia z pierwszej jednej lub dw\u00f3ch godzin ka\u017cdego dnia.<\/p>\n<p>Wynikaj\u0105ca zasada jest kr\u00f3tka. Grupowanie po dniach u\u017cywa albo wsz\u0119dzie <code>event_date<\/code>, albo wsz\u0119dzie <code>DATE(..., \"Europe\/Berlin\")<\/code>, nigdy obu naraz &#8211; a zapytanie \u0142\u0105cz\u0105ce dwie tabele musi po obu stronach u\u017cy\u0107 tej samej konwencji. Sufiks tabeli <code>_TABLE_SUFFIX<\/code> pod\u0105\u017ca za <code>event_date<\/code>, przez co filtr daty na sufiksie i filtr na przeliczonym znaczniku czasu wybieraj\u0105 r\u00f3\u017cne wiersze.<\/p>\n<h2>Przeliczanie w BigQuery<\/h2>\n<p>Trzy funkcje obejmuj\u0105 ka\u017cdy przypadek, a ka\u017cda nosi jednostk\u0119 w nazwie.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>SELECT\n  event_timestamp,\n  TIMESTAMP_MICROS(event_timestamp)                       AS moment_utc,\n  DATETIME(TIMESTAMP_MICROS(event_timestamp),\n           \"Europe\/Berlin\")                               AS ortszeit,\n  DATE(TIMESTAMP_MICROS(event_timestamp), \"Europe\/Berlin\") AS tag_lokal,\n  FORMAT_TIMESTAMP(\"%FT%T%Ez\",\n                   TIMESTAMP_MICROS(event_timestamp),\n                   \"Europe\/Berlin\")                       AS iso_mit_versatz,\n  UNIX_SECONDS(TIMESTAMP_MICROS(event_timestamp))         AS sekunden\nFROM `projekt.analytics_123456789.events_*`\nWHERE _TABLE_SUFFIX = \"20260927\"\nLIMIT 10;<\/code><\/pre>\n<p>R\u00f3\u017cnic\u0119 mi\u0119dzy <code>TIMESTAMP<\/code> a <code>DATETIME<\/code> warto sobie przyswoi\u0107. <code>TIMESTAMP<\/code> jest chwil\u0105 i wie, czym jest; <code>DATETIME<\/code> jest odczytem zegara bez strefy, a zamiana znacznika czasu w taki odczyt to dok\u0142adnie miejsce, w kt\u00f3rym informacja o strefie zostaje celowo odrzucona. Zapisany <code>DATETIME<\/code> odczytany gdzie indziej to droga, kt\u00f3r\u0105 znika godzina.<\/p>\n<p>W drug\u0105 stron\u0119 z ci\u0105gu znak\u00f3w powstaje znacznik czasu wy\u0142\u0105cznie przy podanym formacie &#8211; a podanie formatu jest miejscem, w kt\u00f3rym przesuni\u0119cie zostaje albo odczytane, albo wymy\u015blone.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>PARSE_TIMESTAMP(\"%FT%T%Ez\", \"2026-09-27T01:30:00+02:00\")   -- poprawnie\nPARSE_TIMESTAMP(\"%FT%T\",     \"2026-09-27T01:30:00\")        -- odczytane jako UTC<\/code><\/pre>\n<h2>Okna odrzucaj\u0105ce znacznik czasu<\/h2>\n<p>Dwa systemy odbieraj\u0105ce sprawdzaj\u0105 warto\u015b\u0107, zamiast tylko j\u0105 zapisa\u0107, i oba zawodz\u0105 w spos\u00f3b \u0142atwy do przeoczenia.<\/p>\n<p>Meta Conversions API przyjmuje <code>event_time<\/code> z ostatnich siedmiu dni. Zdarzenie starsze zostaje odrzucone, a wsadowe przes\u0142anie historycznych konwersji traci przez to po cichu wszystko poza oknem &#8211; odpowied\u017a melduje, ile zdarze\u0144 odebrano, a nie ile zachowano. Sprawdzeniem jest liczba z odpowiedzi wobec liczby wys\u0142anych.<\/p>\n<p>Znacznik czasu w przysz\u0142o\u015bci to druga po\u0142owa tej samej zasady i zdarza si\u0119 cz\u0119\u015bciej ni\u017c przesz\u0142o\u015b\u0107: serwer z zegarem spiesz\u0105cym o kilka minut wytwarza zdarzenia, kt\u00f3re platforma odrzuca. Nieudane przes\u0142anie konwersji warto wi\u0119c bada\u0107 jako problem zegara, zanim zostanie zbadane jako problem danych.<\/p>\n<p>Przesy\u0142anie konwersji offline do platform reklamowych zwykle wymaga czasu lokalnego z wyra\u017anym przesuni\u0119ciem, a nie warto\u015bci epoki.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>2026-09-27 01:30:00+02:00<\/code><\/pre>\n<p>Przesuni\u0119cie nie jest ozdob\u0105. Bez niego platforma stosuje stref\u0119 czasow\u0105 konta, a konto w innej strefie ni\u017c sklep przesuwa ka\u017cd\u0105 konwersj\u0119 o t\u0119 r\u00f3\u017cnic\u0119 &#8211; co objawia si\u0119 konwersjami w b\u0142\u0119dnym dniu, a na granicy miesi\u0105ca w b\u0142\u0119dnym miesi\u0105cu.<\/p>\n<h2>Dwie dwuznaczno\u015bci nie do naprawienia po fakcie<\/h2>\n<p>Wszystko powy\u017csze jest przeliczeniem. Te dwie s\u0105 stratami, a jedynym \u015brodkiem jest niedopuszczenie do ich powstania.<\/p>\n<p>Pierwsz\u0105 jest czas lokalny bez przesuni\u0119cia. <code>2026-09-27 01:30:00<\/code> nie jest chwil\u0105, lecz chwil\u0105 w jakiej\u015b strefie &#8211; a je\u017celi strefy nie zapisano, \u017cadne p\u00f3\u017aniejsze przetwarzanie jej nie odzyska. Domys\u0142 jest mo\u017cliwy i pozostaje domys\u0142em: ten sam ci\u0105g znak\u00f3w mo\u017ce oznacza\u0107 dwie chwile odleg\u0142e o godzin\u0119.<\/p>\n<p>Drug\u0105 jest noc zmiany czasu. Przy cofni\u0119ciu zegar\u00f3w godzina mi\u0119dzy drug\u0105 a trzeci\u0105 w nocy zdarza si\u0119 dwa razy, a czas lokalny w jej obr\u0119bie jest naprawd\u0119 dwuznaczny nawet przy znanej strefie. Przesuni\u0119cie to rozstrzyga, bo oba przebiegi maj\u0105 r\u00f3\u017cne przesuni\u0119cia. Sama nazwa strefy tego nie robi.<\/p>\n<p>Jedno i drugie znika, gdy warto\u015bci zapisywane s\u0105 jako UTC i przeliczane wy\u0142\u0105cznie do wy\u015bwietlenia. To zasada jednolinijkowa, brzmi\u0105ca oczywi\u015bcie i \u0142amana bez przerwy, bo czas lokalny to w\u0142a\u015bnie to, co cz\u0142owiek chce przeczyta\u0107 &#8211; a zaradza temu przeliczanie przy odczycie, a nie przy zapisie.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Warto\u015b\u0107 ma 19 cyfr. Co to jest?<\/h3>\n<p>Najprawdopodobniej nanosekundy od epoki. Tego formatu u\u017cywaj\u0105 na przyk\u0142ad OpenTelemetry oraz funkcja UnixNano w Go; w stosie pomiarowym pojawia si\u0119 przede wszystkim w danych serwerowych i w dziennikach. Zabezpieczenie s\u0142usznie go odrzuca, zamiast zgadywa\u0107, a da si\u0119 je rozszerzy\u0107 o jedn\u0105 lini\u0119 dla 19 cyfr z dzielnikiem <code>1_000_000_000<\/code>.<\/p>\n<h3>Czy JavaScript przetwarza 16-cyfrowe mikrosekundy bez straty?<\/h3>\n<p>Dzi\u015b tak, ale na styk. JavaScript przechowuje liczby jako warto\u015bci zmiennoprzecinkowe podw\u00f3jnej precyzji, a te odwzorowuj\u0105 liczby ca\u0142kowite dok\u0142adnie tylko do 9\u00a0007\u00a0199\u00a0254\u00a0740\u00a0991 (<code>Number.MAX_SAFE_INTEGER<\/code>). Warto\u015b\u0107 w mikrosekundach z 2026 roku, 1\u00a0790\u00a0465\u00a0400\u00a0000\u00a0000, jest mniej wi\u0119cej pi\u0119\u0107 razy mniejsza; w mikrosekundach ta granica odpowiada rokowi 2255.<\/p>\n<p>Nanosekundy le\u017c\u0105 natomiast daleko ponad ni\u0105. Warto\u015b\u0107 19-cyfrowa traci przy wczytaniu przez <code>JSON.parse<\/code> ostatnie cyfry, i to bez \u017cadnego b\u0142\u0119du. Gdy takie warto\u015bci s\u0105 potrzebne w JavaScripcie, najlepiej wczytywa\u0107 je jako ci\u0105gi znak\u00f3w i przekszta\u0142ca\u0107 przez <code>BigInt<\/code> albo ju\u017c na serwerze przelicza\u0107 na milisekundy.<\/p>\n<h3>Dlaczego nie ustawi\u0107 po prostu strefy czasowej us\u0142ugi na UTC?<\/h3>\n<p>Usuwa to r\u00f3\u017cnic\u0119 mi\u0119dzy event_date a znacznikiem czasu, ale przenosi problem w inne miejsce. Wszystkie raporty dzienne w GA4 zaczynaj\u0105 si\u0119 wtedy o p\u00f3\u0142nocy UTC, czyli dla sklepu w Berlinie o pierwszej w nocy zim\u0105 i o drugiej latem. Zakup o wp\u00f3\u0142 do pierwszej w nocy trafia do dnia poprzedniego, a warto\u015bci dzienne przestaj\u0105 zgadza\u0107 si\u0119 z kas\u0105, systemem magazynowym i kontami reklamowymi, kt\u00f3re licz\u0105 w czasie lokalnym.<\/p>\n<p>Do tego dochodzi sama zmiana. Nowa strefa raportowania obowi\u0105zuje tylko dla danych od chwili przestawienia, a wcze\u015bniejsze dni zostaj\u0105 takie, jakie by\u0142y. Dzie\u0144 zmiany jest wi\u0119c kr\u00f3tszy albo d\u0142u\u017cszy ni\u017c dwadzie\u015bcia cztery godziny, a szereg czasowy obejmuj\u0105cy zmian\u0119 zestawia dni berli\u0144skie z dniami UTC.<\/p>\n<p>Lepiej sprawdza si\u0119 zasada z artyku\u0142u: us\u0142uga zachowuje stref\u0119, w kt\u00f3rej liczy firma, a ka\u017cde zapytanie wybiera jedn\u0105 konwencj\u0119. Grupowanie w BigQuery wed\u0142ug dni berli\u0144skich ma wtedy te same granice dnia co interfejs, a grupowanie wed\u0142ug UTC jest \u015bwiadomym wyborem innego dnia.<\/p>\n<h3>Jak potwierdzi\u0107, \u017ce za odrzuconym przes\u0142aniem stoi zegar serwera?<\/h3>\n<p>Dwoma sprawdzeniami. Na samym serwerze <code>timedatectl<\/code> w Linuksie pokazuje, czy zegar jest synchronizowany z serwerem czasu; je\u015bli wiersz System clock synchronized ma warto\u015b\u0107 no, rozjechany zegar jest prawdopodobny. Drugie sprawdzenie nie wymaga dost\u0119pu do systemu operacyjnego: ka\u017cda odpowied\u017a HTTP platformy niesie w nag\u0142\u00f3wku <code>Date<\/code> czas jej serwera, a por\u00f3wnanie z w\u0142asnym czasem w tej samej chwili pokazuje odchy\u0142k\u0119 z dok\u0142adno\u015bci\u0105 do oko\u0142o sekundy.<\/p>\n<p>Je\u015bli odchy\u0142ka si\u0119ga minut, znika, gdy tylko zacznie dzia\u0142a\u0107 synchronizacja z serwerem czasu. Zdarzenia ju\u017c wys\u0142ane z b\u0142\u0119dnym czasem i odrzucone nale\u017cy potem wys\u0142a\u0107 ponownie z poprawionym znacznikiem czasu, dop\u00f3ki mieszcz\u0105 si\u0119 w siedmiodniowym oknie.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc3339.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 3339: Date and Time on the Internet<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Sekundy, milisekundy, mikrosekundy, ci\u0105g ISO i data bez strefy czasowej opisuj\u0105 t\u0119 sam\u0105 chwil\u0119 i nie s\u0105 wymienne. Cztery z nich zdradza policzenie cyfr &#8211; a przy pi\u0105tym gubi si\u0119 ca\u0142y dzie\u0144.<\/p>\n","protected":false},"author":1,"featured_media":13263,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[117],"tags":[92084,92229,92100,92238],"class_list":["post-13164","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl","tag-bigquery-pl","tag-devops-pl","tag-google-analytics-4-pl","tag-tutorial-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Rozr\u00f3\u017cnienie pi\u0119ciu format\u00f3w po liczbie cyfr, przeliczanie w BigQuery i granica dnia, na kt\u00f3rej event_date i event_timestamp si\u0119 rozchodz\u0105.\" \/>\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\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Rozr\u00f3\u017cnienie pi\u0119ciu format\u00f3w po liczbie cyfr, przeliczanie w BigQuery i granica dnia, na kt\u00f3rej event_date i event_timestamp si\u0119 rozchodz\u0105.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-26T16:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.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\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie\",\"datePublished\":\"2026-09-26T16:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/\"},\"wordCount\":1490,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.png\",\"keywords\":[\"BigQuery\",\"DevOps\",\"Google Analytics 4\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/\",\"name\":\"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.png\",\"datePublished\":\"2026-09-26T16:25:00+00:00\",\"description\":\"Rozr\u00f3\u017cnienie pi\u0119ciu format\u00f3w po liczbie cyfr, przeliczanie w BigQuery i granica dnia, na kt\u00f3rej event_date i event_timestamp si\u0119 rozchodz\u0105.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie\"}]},{\"@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: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie | Lukas Wojcik","description":"Rozr\u00f3\u017cnienie pi\u0119ciu format\u00f3w po liczbie cyfr, przeliczanie w BigQuery i granica dnia, na kt\u00f3rej event_date i event_timestamp si\u0119 rozchodz\u0105.","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\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie | Lukas Wojcik","og_description":"Rozr\u00f3\u017cnienie pi\u0119ciu format\u00f3w po liczbie cyfr, przeliczanie w BigQuery i granica dnia, na kt\u00f3rej event_date i event_timestamp si\u0119 rozchodz\u0105.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-26T16:25:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.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\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie","datePublished":"2026-09-26T16:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/"},"wordCount":1490,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.png","keywords":["BigQuery","DevOps","Google Analytics 4","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/","name":"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.png","datePublished":"2026-09-26T16:25:00+00:00","description":"Rozr\u00f3\u017cnienie pi\u0119ciu format\u00f3w po liczbie cyfr, przeliczanie w BigQuery i granica dnia, na kt\u00f3rej event_date i event_timestamp si\u0119 rozchodz\u0105.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13164-tutorial-piec-formatow-znacznika-czasu-w.png","width":1200,"height":630,"caption":"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-piec-formatow-znacznika-czasu-w-stosie-pomiarowym-i-ich-przeliczanie\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Pi\u0119\u0107 format\u00f3w znacznika czasu w stosie pomiarowym i ich przeliczanie"}]},{"@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\/13164","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=13164"}],"version-history":[{"count":3,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13164\/revisions"}],"predecessor-version":[{"id":20635,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13164\/revisions\/20635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13263"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}