Bagikan melalui


fungsi parse_timestamp

Berlaku untuk:check ditandai ya 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 #iso8601 atau #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 NULL nilai, mereka diabaikan. Jika semua pola yang disediakan adalah NULL, hasilnya adalah NULL.
  • Jika tanda waktu cocok dengan pola yang tidak berisi informasi zona waktu, tanda waktu diurai dalam zona waktu sesi.

Kondisi kesalahan

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