全部产品
Search
文档中心

MaxCompute:FROM_UTC_TIMESTAMP

更新时间:Jul 02, 2025

Mengembalikan cap waktu yang dikonversi dari Waktu Universal Terkoordinasi (UTC) ke zona waktu tertentu. Fungsi ini merupakan bagian tambahan dari MaxCompute V2.0.

Catatan penggunaan

Nilai kembali dari fungsi FROM_UTC_TIMESTAMP dipengaruhi oleh nilai odps.sql.timezone yang dikonfigurasi untuk proyek Anda. Jika Anda mengatur odps.sql.timezone ke Asia/Shanghai, zona waktu UTC+8 digunakan, yang 8 jam lebih cepat dari UTC. Dalam hal ini, 8 jam ditambahkan ke hasil perhitungan fungsi FROM_UTC_TIMESTAMP. Sebagai contoh, fungsi FROM_UTC_TIMESTAMP(0, 'Asia/Shanghai') mengonversi cap waktu dengan UTC+0 menjadi cap waktu dengan waktu Beijing (UTC+08:00), dan hasil perhitungannya adalah 0 + 8 × 3600 = 28800. Konfigurasi odps.sql.timezone=Asia/Shanghai memerlukan offset 8 jam tambahan. Akibatnya, nilai kembali adalah 1970-01-01 16:00:00.

Sintaksis

timestamp from_utc_timestamp({any primitive type}*, string <timezone>)

Parameter

  • {any primitive type}*: wajib. Cap waktu bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT. Jika nilainya bertipe TINYINT, SMALLINT, INT, atau BIGINT, satuan waktu akurat hingga milidetik.

  • timezone: wajib. Zona waktu baru.

    Catatan

    Anda dapat mencari daftar zona waktu menggunakan mesin pencari. Untuk informasi lebih lanjut tentang zona waktu yang didukung, lihat Zona Waktu.

Nilai kembali

Nilai bertipe TIMESTAMP dikembalikan. Nilai kembali berformat yyyy-mm-dd hh:mi:ss.ff3. Nilai kembali bervariasi berdasarkan aturan berikut:

  • Jika nilai {any primitive type}* bukan bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT, kesalahan akan dikembalikan.

  • Jika nilai {any primitive type}* adalah null, kesalahan akan dikembalikan.

  • Jika nilai timezone adalah null, nilai kembali adalah null.

Data sampel

Berikut ini adalah data sumber sampel untuk membantu Anda memahami cara menggunakan fungsi tanggal. Pada topik ini, tabel bernama mf_date_fun_t dibuat dan data dimasukkan ke dalam tabel. Pernyataan sampel:

create table if not exists mf_date_fun_t(
    id      int,
    date1   date,
    datetime1   datetime,
    timestamp1 timestamp,
    date2   date,
    datetime2   datetime,
    timestamp2 timestamp,
    date3 string,
    date4 bigint);
insert into mf_date_fun_t values
(1,DATE'2021-11-29',DATETIME'2021-11-29 00:01:00',TIMESTAMP'2021-01-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-20',123456780),
(2,DATE'2021-11-28',DATETIME'2021-11-28 00:02:00',TIMESTAMP'2021-02-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-21',123456781),
(3,DATE'2021-11-27',DATETIME'2021-11-27 00:03:00',TIMESTAMP'2021-03-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-22',123456782),
(4,DATE'2021-11-26',DATETIME'2021-11-26 00:04:00',TIMESTAMP'2021-04-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-23',123456783),
(5,DATE'2021-11-25',DATETIME'2021-11-25 00:05:00',TIMESTAMP'2021-05-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-24',123456784),
(6,DATE'2021-11-24',DATETIME'2021-11-24 00:06:00',TIMESTAMP'2021-06-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-25',123456785),
(7,DATE'2021-11-23',DATETIME'2021-11-23 00:07:00',TIMESTAMP'2021-07-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-26',123456786),
(8,DATE'2021-11-22',DATETIME'2021-11-22 00:08:00',TIMESTAMP'2021-08-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-27',123456787),
(9,DATE'2021-11-21',DATETIME'2021-11-21 00:09:00',TIMESTAMP'2021-09-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-28',123456788),
(10,DATE'2021-11-20',DATETIME'2021-11-20 00:10:00',TIMESTAMP'2021-10-11 00:00:00.123456789',DATE'2021-10-29',DATETIME'2021-10-29 00:00:00',TIMESTAMP'2021-10-11 00:00:00.123456789','2021-11-29',123456789);

Kueri data dari tabel mf_date_fun_t. Pernyataan sampel:

select * from mf_date_fun_t;
-- Hasil berikut dikembalikan: 
+------+-------+------------+------------+-------+------------+------------+-------+------------+
| id   | date1 | datetime1  | timestamp1 | date2 | datetime2  | timestamp2 | date3 | date4      |
+------+-------+------------+------------+-------+------------+------------+-------+------------+
| 1    | 2021-11-29 | 2021-11-29 00:01:00 | 2021-01-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-20 | 123456780  |
| 2    | 2021-11-28 | 2021-11-28 00:02:00 | 2021-02-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-21 | 123456781  |
| 3    | 2021-11-27 | 2021-11-27 00:03:00 | 2021-03-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-22 | 123456782  |
| 4    | 2021-11-26 | 2021-11-26 00:04:00 | 2021-04-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-23 | 123456783  |
| 5    | 2021-11-25 | 2021-11-25 00:05:00 | 2021-05-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-24 | 123456784  |
| 6    | 2021-11-24 | 2021-11-24 00:06:00 | 2021-06-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-25 | 123456785  |
| 7    | 2021-11-23 | 2021-11-23 00:07:00 | 2021-07-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-26 | 123456786  |
| 8    | 2021-11-22 | 2021-11-22 00:08:00 | 2021-08-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-27 | 123456787  |
| 9    | 2021-11-21 | 2021-11-21 00:09:00 | 2021-09-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-28 | 123456788  |
| 10   | 2021-11-20 | 2021-11-20 00:10:00 | 2021-10-11 00:00:00.123456789 | 2021-10-29 | 2021-10-29 00:00:00 | 2021-10-11 00:00:00.123456789 | 2021-11-29 | 123456789  |
+------+-------+------------+------------+-------+------------+------------+-------+------------+

Contoh: data statis

-- Satuan waktu dari nilai input akurat hingga milidetik dan nilai kembali adalah 2017-08-01 04:24:00.0. 
select from_utc_timestamp(1501557840000, 'PST'); 
-- Nilai kembali adalah 1970-01-30 08:00:00.0. 
select from_utc_timestamp('1970-01-30 16:00:00','PST'); 
-- Nilai kembali adalah 1970-01-29 16:00:00.0. 
select from_utc_timestamp('1970-01-30','PST'); 
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. Nilai kembali adalah 2011-12-25 17:00:00:00.123. 
set odps.sql.type.system.odps2=true;
select from_utc_timestamp(timestamp '2011-12-25 09:00:00.123456', 'Asia/Shanghai');
-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. Nilai kembali adalah 2011-12-25 01:55:00.0. 
set odps.sql.type.system.odps2=true;
select from_utc_timestamp(timestamp '2011-12-25 06:55:00', 'America/Toronto');
-- Nilai kembali adalah null. 
select from_utc_timestamp('1970-01-30',null);

Contoh: data tabel

Konversikan nilai tanggal di kolom datetime1 dan timestamp1 menjadi cap waktu dalam zona waktu tertentu. Data di Data Sampel digunakan dalam contoh ini. Pernyataan sampel:

-- Aktifkan edisi tipe data MaxCompute V2.0. Kirimkan pernyataan SET berikut bersama dengan pernyataan SQL. 
set odps.sql.type.system.odps2=true;
select datetime1, from_utc_timestamp(datetime1,'PST') pst, timestamp1, from_utc_timestamp(timestamp1,'Asia/Shanghai') asia from mf_date_fun_t;

Hasil berikut dikembalikan:

+---------------------+---------------------+-------------------------------+-------------------------------+
| datetime1           | pst                 | timestamp1                    | asia                          |
+---------------------+---------------------+-------------------------------+-------------------------------+
| 2021-11-29 00:01:00 | 2021-11-28 16:01:00 | 2021-01-11 00:00:00.123456789 | 2021-01-11 08:00:00.123456789 |
| 2021-11-28 00:02:00 | 2021-11-27 16:02:00 | 2021-02-11 00:00:00.123456789 | 2021-02-11 08:00:00.123456789 |
| 2021-11-27 00:03:00 | 2021-11-26 16:03:00 | 2021-03-11 00:00:00.123456789 | 2021-03-11 08:00:00.123456789 |
| 2021-11-26 00:04:00 | 2021-11-25 16:04:00 | 2021-04-11 00:00:00.123456789 | 2021-04-11 08:00:00.123456789 |
| 2021-11-25 00:05:00 | 2021-11-24 16:05:00 | 2021-05-11 00:00:00.123456789 | 2021-05-11 08:00:00.123456789 |
| 2021-11-24 00:06:00 | 2021-11-23 16:06:00 | 2021-06-11 00:00:00.123456789 | 2021-06-11 08:00:00.123456789 |
| 2021-11-23 00:07:00 | 2021-11-22 16:07:00 | 2021-07-11 00:00:00.123456789 | 2021-07-11 08:00:00.123456789 |
| 2021-11-22 00:08:00 | 2021-11-21 16:08:00 | 2021-08-11 00:00:00.123456789 | 2021-08-11 08:00:00.123456789 |
| 2021-11-21 00:09:00 | 2021-11-20 16:09:00 | 2021-09-11 00:00:00.123456789 | 2021-09-11 08:00:00.123456789 |
| 2021-11-20 00:10:00 | 2021-11-19 16:10:00 | 2021-10-11 00:00:00.123456789 | 2021-10-11 08:00:00.123456789 |
+---------------------+---------------------+-------------------------------+-------------------------------+

Fungsi terkait

FROM_UTC_TIMESTAMP adalah fungsi tanggal. Untuk informasi lebih lanjut tentang fungsi terkait komputasi dan konversi tanggal, lihat Fungsi Tanggal.