Przejdź do głównej zawartości

TO_TIMESTAMP konwertuje wyrażenie na datę z czasem (timestamp/datetime).

Funkcja może przyjmować jeden lub dwa argumenty. Jeśli podano jeden argument, funkcja wyodrębnia datę z ciągu znaków. Jeśli argument jest liczbą całkowitą, funkcja interpretuje ją jako liczbę sekund, milisekund lub mikrosekund przed epoką Uniksa (dla liczby ujemnej) lub po niej (dla liczby dodatniej); epoka to północ 1 stycznia 1970 r.:

  • Jeśli liczba całkowita jest mniejsza niż 31 536 000 000, jest traktowana jako sekundy.
  • Jeśli liczba całkowita jest większa lub równa 31 536 000 000 i mniejsza niż 31 536 000 000 000, jest traktowana jako milisekundy.
  • Jeśli liczba całkowita jest większa lub równa 31 536 000 000 000, jest traktowana jako mikrosekundy.

Jeśli podano dwa argumenty, funkcja konwertuje pierwszy ciąg znaków na timestamp zgodnie z formatem określonym w drugim ciągu. Aby dostosować format daty i czasu w PlaidCloud Lakehouse, można użyć specyfikatorów. Pozwalają one zdefiniować wymagany format wartości daty i czasu. Pełną listę obsługiwanych specyfikatorów znajdziesz w sekcji Formatowanie daty i czasu.

  • Wynikowy timestamp odzwierciedla strefę czasową PlaidCloud Lakehouse.
  • Informacje o strefie czasowej muszą być zawarte w konwertowanym ciągu znaków, w przeciwnym razie zostanie zwrócona wartość NULL.

Formaty daty zapisuje się zgodnie ze specyfikacją strftime. Zobacz krótkie zestawienie.

Zobacz także: TO_DATE

func.to_timestamp(<expr>)
func.to_timestamp('2022-01-02T03:25:02.868894-07:00')
┌────────────────────────────────────────────────────────────────┐
│ func.to_timestamp('2022-01-02T03:25:02.868894-07:00') │
│ Timestamp │
├────────────────────────────────────────────────────────────────┤
│ 2022-01-02 10:25:02.868894 │
└────────────────────────────────────────────────────────────────┘
-- Convert a string or integer to a timestamp
TO_TIMESTAMP(<expr>)
-- Convert a string to a timestamp using the given pattern
TO_TIMESTAMP(<expr, expr>)

Zwraca timestamp w formacie „YYYY-MM-DD hh:mm:ss.ffffff”. Jeśli podany ciąg znaków pasuje do tego formatu, ale nie zawiera części czasowej, jest automatycznie rozszerzany do tego wzorca. Wartością uzupełniającą jest 0.

SELECT TO_TIMESTAMP('2022-01-02T03:25:02.868894-07:00');
---
2022-01-02 10:25:02.868894
SELECT TO_TIMESTAMP('2022-01-02 02:00:11');
---
2022-01-02 02:00:11.000000
SELECT TO_TIMESTAMP('2022-01-02T02:00:22');
---
2022-01-02 02:00:22.000000
SELECT TO_TIMESTAMP('2022-01-02T01:12:00-07:00');
---
2022-01-02 08:12:00.000000
SELECT TO_TIMESTAMP('2022-01-02T01');
---
2022-01-02 01:00:00.000000
SELECT TO_TIMESTAMP(1);
---
1970-01-01 00:00:01.000000
SELECT TO_TIMESTAMP(-1);
---
1969-12-31 23:59:59.000000
SET GLOBAL timezone ='Japan';
SELECT TO_TIMESTAMP('2022 年 2 月 4 日、8 時 58 分 59 秒、タイムゾーン:+0900', '%Y年%m月%d日、%H時%M分%S秒、タイムゾーン:%z');
---
2022-02-04 08:58:59.000000
SET GLOBAL timezone ='America/Toronto';
SELECT TO_TIMESTAMP('2022 年 2 月 4 日、8 時 58 分 59 秒、タイムゾーン:+0900', '%Y年%m月%d日、%H時%M分%S秒、タイムゾーン:%z');
---
2022-02-03 18:58:59.000000