Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
fungsi
Berlaku untuk:
Databricks Runtime 18.1 ke atas
Jika expr adalah string, uraikan ke dalam TIMESTAMP sesuai dengan pola pencocokan pertama dalam daftar format yang diberikan. Satu atau beberapa format dapat mereferensikan daftar format yang telah ditentukan sebelumnya. Jika expr adalah jenis numerik, uraikan sebagai tanda waktu Unix.
Sintaksis
parse_timestamp(expr [, { pattern [...] } ])
Argumen
-
expr: String atau nilai numerik untuk diurai
TIMESTAMPke dalam . Jenis yang diterima adalah:-
TINYINT,SMALLINT,INT,BIGINT -
FLOAT,DOUBLE -
DECIMAL(hingga 18 presisi) STRING
-
-
pola: Daftar pola tanda waktu opsional atau referensi ke daftar yang telah ditentukan sebelumnya seperti
#iso8601atau#rfc3339. Pola tanda waktu harus berupa string konstanta. Jika tidak ada pola yang ditentukan, pola tersebut setara dengan menentukan#extended.
Pengembalian Barang
Mewakili TIMESTAMP yang diurai expr.
expr Jika adalah string, string diurai sesuai dengan pola pencocokan pertama. Jika tidak ada pola yang cocok, fungsi akan menimbulkan kesalahan.
expr Jika numerik, itu selalu diurai sebagai tanda waktu Unix.
Jika expr adalah NULL, fungsi mengembalikan NULL.
Untuk mengembalikan NULL alih-alih kesalahan saat penguraian gagal, gunakan try_parse_timestamp fungsi.
Catatan
- Jika daftar pola berisi
NULLnilai, mereka diabaikan. Jika semua pola yang disediakan adalahNULL, hasilnya adalahNULL. - Jika tanda waktu cocok dengan pola yang tidak berisi informasi zona waktu, tanda waktu diurai dalam zona waktu sesi.
Kondisi kesalahan
- CANNOT_PARSE_TIMESTAMP
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- INVALID_PARAMETER_VALUE. POLA
- DATATYPE_MISMATCH. NON_FOLDABLE_INPUT
Examples
-- Parse timestamp according to default pattern list
> SELECT parse_timestamp('2024-12-09T19:30:01');
2024-12-09 19:30:01.000
-- Parse a microsecond epoch timestamp using the unix pattern list
> SELECT parse_timestamp('1733772601000000', '#unix');
2024-12-09 19:30:01.000
-- Bad `expr` that does not match any pattern
> SELECT parse_timestamp('bad input');
Error: CANNOT_PARSE_TIMESTAMP
-- Use try_parse_timestamp to return NULL instead of error
> SELECT try_parse_timestamp('bad input');
NULL
-- Extend the default pattern list with custom patterns
> SELECT parse_timestamp(col, "#extended", "dd MMM, yyyy", "MMM d; yy") FROM VALUES ('2024-12-01'), ('02 Dec, 2024'), ('DEC 3; 24') AS t(col)
2024-12-01 00:00:00.000
2024-12-02 00:00:00.000
2024-12-03 00:00:00.000
Referensi pola
parse_timestamp dan try_parse_timestamp fungsi menggunakan kumpulan pola yang berbeda dalam beberapa cara dari pola tanggalwaktu standar yang digunakan oleh to_timestamp. Tabel berikut mencantumkan semua simbol pola dan apakah masing-masing didukung:
| Symbol | Meaning | Examples | Support |
|---|---|---|---|
| U | Unix | Lihat catatan di bawah ini | Dukungan |
| G | zaman | Masehi; Anno Domini | Tidak didukung |
| y | tahun | 2020; 20 | Dukungan |
| D | hari dalam tahun | 189 | Tidak didukung |
| M/L | bulan-tahun | 7; 07; Jul; Juli | Dukungan |
| d | tanggal dalam bulan | 28 | Dukungan |
| T/q | kuartal-tahun | 3; 03; Q3; kuarter ke-3 | Tidak didukung |
| E | hari dalam minggu | Sel; Selasa | Dukungan |
| F | hari yang selaras dalam seminggu dalam sebulan | 3 | Tidak didukung |
| a | pagi-sore/malam-hari | Perdana Menteri | Dukungan |
| h | jam dalam format 12-jam (1-12) | 12 | Dukungan |
| K | jam-pagi-siang (0-11) | 0 | Dukungan |
| k | jam-hari (1-24) | 1 | Tidak didukung |
| H | jam-hari (0-23) | 0 | Dukungan |
| m | menit dari jam | 30 | Dukungan |
| s | detik-menit | 55 | Dukungan |
| S | pecahan detik | 978 | Dukungan |
| V | ID zona waktu | Amerika/Los_Angeles; Z; -08:30 | Dukungan |
| z | nama zona waktu | Waktu Standar Pasifik; PST | Dukungan |
| O | offset zona setempat | GMT+8; GMT+08:00; UTC-08:00 | Dukungan |
| X | penggeseran zona 'Z' untuk nilai nol | Z; -08; -0830; -08:30 | Didukung (1-3 digit) |
| x | pengimbangan zona | +0000; -08; -0830; -08:30 | Didukung (1-3 digit) |
| Z | pengimbangan zona | +0000; -0800; -08:00 | Dukungan |
| # | daftar pola | #common, #iso8601 | Dukungan |
Nota
Pola Unix (U): Daftar #unix pola mengurai tanda waktu epoch Unix. Untuk tanggal antara 1971-08-03 dan 3554-06-09, implementasinya dapat membedakan dan mengurai tanda waktu Unix dalam hitungan detik, mikrodetik, dan nanodetik. Tanggal di luar rentang tersebut mungkin gagal diurai atau diurai dengan tidak benar. Bilangan bulat negatif tidak didukung. Nilai pecahan didukung hingga 9 tempat desimal dan dipotong agar sesuai dengan presisi jenis hasil.
Lokal: Tempat penampung pola tidak sadar lokal. Nama bulan dan hari hanya didukung dalam bahasa Inggris.
Daftar pola
Anda dapat meneruskan daftar pola yang telah ditentukan sebelumnya berdasarkan nama (misalnya #extended, , #iso8601#unix). Daftar pola berikut tersedia:
- common — Pola yang umum ditemukan tidak didefinisikan oleh standar
- iso8601
- rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc9557
- unix — Tanda waktu unix epoch saja
- diperluas — Persatuan semua daftar di atas; juga default ketika tidak ada pola yang ditentukan
- extended-dmy — Diperluas dengan format khusus lokal DMY
- extended-mdy — Diperluas dengan format khusus lokal MDY