← Cloudflare Pipelines / pipelines / sql-reference / scalar-functions
Funkce pro čas a datum
Implementace skalárních funkcí Cloudflare Pipelines vychází z Apache DataFusion ↗ (přes Arroyo ↗) a tato dokumentace vychází z referenční dokumentace funkcí DataFusion.
date_bin
Vypočítá časové intervaly a vrátí začátek intervalu nejbližšího zadanému časovému razítku.
Použijte date_bin ke snížení vzorkovací frekvence časových řad seskupením řádků do časových "bins" (intervalů) nebo "windows" (oken)
a použitím agregační nebo výběrové funkce na každé okno.
Pokud například data rozdělíte do intervalů ("bin" nebo "window") po 15 minutách, vstupní
časové razítko 2023-01-01T18:18:18Z se aktualizuje na počáteční čas 15minutového
intervalu, do kterého patří: 2023-01-01T18:15:00Z.
date_bin(interval, expression, origin-timestamp)Argumenty
- interval: Interval koše.
- výraz: Časový výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce.
- origin-timestamp: Volitelné. Počáteční bod použitý k určení hranic košů. Pokud není zadán,
výchozí hodnota je
1970-01-01T00:00:00Z(unixová epocha v UTC).
Podporovány jsou následující intervaly:
- nanoseconds
- microseconds
- milliseconds
- sekundy
- minutes
- hours
- days
- týdny
- months
- roky
- century
date_trunc
Usekne hodnotu časového razítka na zadanou přesnost.
date_trunc(precision, expression)Argumenty
-
precision: Přesnost času, na kterou se má useknout. Podporovány jsou tyto přesnosti:
- year / YEAR
- quarter / QUARTER
- month / MONTH
- week / WEEK
- day / DAY
- hour / HOUR
- minute / MINUTE
- second / SECOND
-
výraz: Časový výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce.
Aliasy
- datetrunc
datetrunc
Alias pro date_trunc.
date_part
Vrátí zadanou část data jako celé číslo.
date_part(part, expression)Argumenty
-
part: Část data, která se má vrátit. Podporovány jsou tyto části data:
- rok
- čtvrtletí (vrací hodnotu v uzavřeném rozsahu [1, 4] podle toho, ve kterém čtvrtletí roku dané datum leží)
- month
- týden (týden v roce)
- day (den v měsíci)
- hour
- minute
- sekunda
- millisecond
- microsecond
- nanosecond
- dow (den v týdnu)
- doy (den v roce)
- epoch (sekundy od Unixové epochy)
-
výraz: Časový výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce.
Aliasy
- datepart
datepart
Alias pro date_part.
extract
Vrátí dílčí pole z hodnoty typu čas jako celé číslo.
extract(field FROM source)Odpovídá volání date_part('field', source). Například následující zápisy jsou rovnocenné:
extract(day FROM '2024-04-13'::date)
date_part('day', '2024-04-13'::date)Viz date_part.
make_date
Vytvoří datum ze složek rok/měsíc/den.
make_date(year, month, day)Argumenty
- rok: Rok, který se použije při vytváření data. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
- month: Měsíc, který se použije při vytváření data. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
- day: Den, který se použije při vytváření data. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
Příklad
> select make_date(2023, 1, 31);
+-------------------------------------------+
| make_date(Int64(2023),Int64(1),Int64(31)) |
+-------------------------------------------+
| 2023-01-31 |
+-------------------------------------------+
> select make_date('2023', '01', '31');
+-----------------------------------------------+
| make_date(Utf8("2023"),Utf8("01"),Utf8("31")) |
+-----------------------------------------------+
| 2023-01-31 |
+-----------------------------------------------+to_char
Vrátí řetězcovou reprezentaci data, času, časového razítka nebo trvání podle zadaného Formát Chrono ↗. Na rozdíl od ekvivalentu této funkce v PostgreSQL není podporováno číselné formátování.
to_char(expression, format)Argumenty
- výraz: Výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce, jejímž výsledkem je datum, čas, časové razítko nebo doba trvání.
- format: Formát Chrono ↗ řetězec, který se má použít k převodu výrazu.
Příklad
> > select to_char('2023-03-01'::date, '%d-%m-%Y');
+----------------------------------------------+
| to_char(Utf8("2023-03-01"),Utf8("%d-%m-%Y")) |
+----------------------------------------------+
| 01-03-2023 |
+----------------------------------------------+Aliasy
- date_format
to_timestamp
Převede hodnotu na časové razítko (YYYY-MM-DDT00:00:00Z).
Jako vstup podporuje řetězce, celá čísla, čísla bez znaménka a desetinná čísla.
Řetězce se analyzují ve formátu RFC3339 (například '2023-07-20T05:44:00'), pokud nejsou zadány žádné [Chrono formats].
Celá čísla, čísla bez znaménka a desetinná čísla se interpretují jako sekundy od začátku unixové epochy (1970-01-01T00:00:00Z).
Vrátí odpovídající časové razítko.
Poznámka: to_timestamp vrací Timestamp(Nanosecond). Podporovaný rozsah pro vstupní celé číslo je mezi -9223372037 a 9223372036.
Podporovaný rozsah pro vstupní řetězec je mezi 1677-09-21T00:12:44.0 a 2262-04-11T23:47:16.0. Použijte prosím to_timestamp_seconds
pro vstup mimo podporovaný rozsah.
to_timestamp(expression[, ..., format_n])Argumenty
- výraz: Výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
- format_n: Volitelné Formát Chrono ↗ řetězce, které se mají použít k parsování výrazu. Formáty se zkoušejí v pořadí, ve kterém jsou uvedeny, a vrátí se první úspěšný. Pokud se žádný z formátů výraz úspěšně nepodaří naparsovat, vrátí se chyba.
Příklad
> select to_timestamp('2023-01-31T09:26:56.123456789-05:00');
+-----------------------------------------------------------+
| to_timestamp(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-----------------------------------------------------------+
| 2023-01-31T14:26:56.123456789 |
+-----------------------------------------------------------+
> select to_timestamp('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+--------------------------------------------------------------------------------------------------------+
| to_timestamp(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+--------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123456789 |
+--------------------------------------------------------------------------------------------------------+to_timestamp_millis
Převede hodnotu na časové razítko (YYYY-MM-DDT00:00:00.000Z).
Jako vstup podporuje řetězce, celá čísla a čísla bez znaménka.
Řetězce se analyzují ve formátu RFC3339 (například '2023-07-20T05:44:00'), pokud nejsou zadány žádné Formát Chrono ↗formáty jsou k dispozici.
Celá čísla a čísla bez znaménka se interpretují jako milisekundy od unixové epochy (1970-01-01T00:00:00Z).
Vrátí odpovídající časové razítko.
to_timestamp_millis(expression[, ..., format_n])Argumenty
- výraz: Výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
- format_n: Volitelné Formát Chrono ↗ řetězce, které se mají použít k parsování výrazu. Formáty se zkoušejí v pořadí, ve kterém jsou uvedeny, a vrátí se první úspěšný. Pokud se žádný z formátů výraz úspěšně nepodaří naparsovat, vrátí se chyba.
Příklad
> select to_timestamp_millis('2023-01-31T09:26:56.123456789-05:00');
+------------------------------------------------------------------+
| to_timestamp_millis(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+------------------------------------------------------------------+
| 2023-01-31T14:26:56.123 |
+------------------------------------------------------------------+
> select to_timestamp_millis('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+---------------------------------------------------------------------------------------------------------------+
| to_timestamp_millis(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+---------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123 |
+---------------------------------------------------------------------------------------------------------------+to_timestamp_micros
Převede hodnotu na časové razítko (YYYY-MM-DDT00:00:00.000000Z).
Jako vstup podporuje řetězce, celá čísla a čísla bez znaménka.
Řetězce se analyzují ve formátu RFC3339 (například '2023-07-20T05:44:00'), pokud nejsou zadány žádné Formát Chrono ↗formáty jsou k dispozici.
Celá čísla a čísla bez znaménka se interpretují jako mikrosekundy od unixové epochy (1970-01-01T00:00:00Z)
Vrací odpovídající časové razítko.
to_timestamp_micros(expression[, ..., format_n])Argumenty
- výraz: Výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
- format_n: Volitelné Formát Chrono ↗ řetězce, které se mají použít k parsování výrazu. Formáty se zkoušejí v pořadí, ve kterém jsou uvedeny, a vrátí se první úspěšný. Pokud se žádný z formátů výraz úspěšně nepodaří naparsovat, vrátí se chyba.
Příklad
> select to_timestamp_micros('2023-01-31T09:26:56.123456789-05:00');
+------------------------------------------------------------------+
| to_timestamp_micros(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+------------------------------------------------------------------+
| 2023-01-31T14:26:56.123456 |
+------------------------------------------------------------------+
> select to_timestamp_micros('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+---------------------------------------------------------------------------------------------------------------+
| to_timestamp_micros(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+---------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123456 |
+---------------------------------------------------------------------------------------------------------------+to_timestamp_nanos
Převede hodnotu na časové razítko (YYYY-MM-DDT00:00:00.000000000Z).
Jako vstup podporuje řetězce, celá čísla a čísla bez znaménka.
Řetězce se analyzují ve formátu RFC3339 (například '2023-07-20T05:44:00'), pokud nejsou zadány žádné [Chrono formats].
Celá čísla a čísla bez znaménka se interpretují jako nanosekundy od začátku unixové epochy (1970-01-01T00:00:00Z).
Vrátí odpovídající časové razítko.
to_timestamp_nanos(expression[, ..., format_n])Argumenty
- výraz: Výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
- format_n: Volitelné Formát Chrono ↗ řetězce, které se mají použít k parsování výrazu. Formáty se zkoušejí v pořadí, ve kterém jsou uvedeny, a vrátí se první úspěšný. Pokud se žádný z formátů výraz úspěšně nepodaří naparsovat, vrátí se chyba.
Příklad
> select to_timestamp_nanos('2023-01-31T09:26:56.123456789-05:00');
+-----------------------------------------------------------------+
| to_timestamp_nanos(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-----------------------------------------------------------------+
| 2023-01-31T14:26:56.123456789 |
+-----------------------------------------------------------------+
> select to_timestamp_nanos('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+--------------------------------------------------------------------------------------------------------------+
| to_timestamp_nanos(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+--------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123456789 |
+---------------------------------------------------------------------------------------------------------------+to_timestamp_seconds
Převede hodnotu na časové razítko (YYYY-MM-DDT00:00:00.000Z).
Jako vstup podporuje řetězce, celá čísla a čísla bez znaménka.
Řetězce se analyzují ve formátu RFC3339 (například '2023-07-20T05:44:00'), pokud nejsou zadány žádné Formát Chrono ↗formáty jsou k dispozici.
Celá čísla a čísla bez znaménka se interpretují jako sekundy od unixové epochy (1970-01-01T00:00:00Z).
Vrátí odpovídající časové razítko.
to_timestamp_seconds(expression[, ..., format_n])Argumenty
- výraz: Výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
- format_n: Volitelné Formát Chrono ↗ řetězce, které se mají použít k parsování výrazu. Formáty se zkoušejí v pořadí, ve kterém jsou uvedeny, a vrátí se první úspěšný. Pokud se žádný z formátů výraz úspěšně nepodaří naparsovat, vrátí se chyba.
Příklad
> select to_timestamp_seconds('2023-01-31T09:26:56.123456789-05:00');
+-------------------------------------------------------------------+
| to_timestamp_seconds(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-------------------------------------------------------------------+
| 2023-01-31T14:26:56 |
+-------------------------------------------------------------------+
> select to_timestamp_seconds('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+----------------------------------------------------------------------------------------------------------------+
| to_timestamp_seconds(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+----------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00 |
+----------------------------------------------------------------------------------------------------------------+from_unixtime
Převede celé číslo na formát časového razítka RFC3339 (YYYY-MM-DDT00:00:00.000000000Z).
Celá čísla a čísla bez znaménka se interpretují jako nanosekundy od začátku unixové epochy (1970-01-01T00:00:00Z)
vrátí odpovídající časové razítko.
from_unixtime(expression)Argumenty
- výraz: Výraz, se kterým se pracuje. Může to být konstanta, sloupec nebo funkce a libovolná kombinace aritmetických operátorů.
now
Vrátí časové razítko UTC v okamžiku spuštění pipeline.
Návratová hodnota now() se určuje v době kompilace dotazu a zůstává konstantní po celou dobu běhu pipeline.