Fungsi CONVERT_TIMEZONE - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fungsi CONVERT_TIMEZONE

CONVERT_TIMEZONE mengonversi stempel waktu dari satu zona waktu ke zona waktu lainnya. Fungsi ini secara otomatis menyesuaikan waktu musim panas.

Sintaks

CONVERT_TIMEZONE( ['source_timezone',] 'target_timezone', 'timestamp')

Argumen

source_timezone

(Opsional) Zona waktu stempel waktu saat ini. Defaultnya adalah UTC. Untuk informasi selengkapnya, lihat Catatan penggunaan zona waktu.

target_zona waktu

Zona waktu untuk stempel waktu baru. Untuk informasi selengkapnya, lihat Catatan penggunaan zona waktu.

stempel waktu

Kolom timestamp atau ekspresi yang secara implisit mengkonversi ke stempel waktu.

Jenis pengembalian

TIMESTAMP

Catatan penggunaan zona waktu

source_timezone atau target_timezone dapat ditentukan sebagai nama zona waktu (seperti 'Africa/Kampala' atau 'Singapore') atau sebagai singkatan zona waktu (seperti 'UTC' atau 'PDT'). Anda tidak perlu mengubah nama zona waktu menjadi nama atau singkatan menjadi singkatan. Misalnya, Anda dapat memilih stempel waktu dari nama zona waktu sumber 'Singapura' dan mengubahnya menjadi stempel waktu dalam singkatan zona waktu 'PDT'.

catatan

Hasil penggunaan nama zona waktu atau singkatan zona waktu dapat berbeda karena waktu musiman lokal, seperti waktu musim panas.

Menggunakan nama zona waktu

Untuk melihat daftar nama zona waktu saat ini dan lengkap, jalankan perintah berikut.

select pg_timezone_names();

Setiap baris berisi string yang dipisahkan koma dengan nama zona waktu, singkatan, offset UTC, dan indikator jika zona waktu mengamati penghematan siang hari (atau). t f Misalnya, cuplikan berikut menunjukkan dua baris yang dihasilkan. Baris pertama adalah zona waktuEurope/Paris, singkatanCET, dengan 01:00:00 offset dari UTC, dan f untuk menunjukkan itu tidak mengamati waktu musim panas. Baris kedua adalah zona waktuIsrael, singkatanIST, dengan 02:00:00 offset dari UTC, dan f untuk menunjukkan itu tidak mengamati waktu musim panas.

pg_timezone_names ----------------- (Europe/Paris,CET,01:00:00,f) (Israel,IST,02:00:00,f)

Jalankan pernyataan SQL untuk mendapatkan seluruh daftar dan menemukan nama zona waktu. Sekitar 600 baris dikembalikan. Meskipun beberapa nama zona waktu yang dikembalikan adalah inisialisme atau akronim yang dikapitalisasi (misalnya; GB, RRC, ROK), fungsi CONVERT_TIMEZONE memperlakukannya sebagai nama zona waktu, bukan singkatan zona waktu.

Jika Anda menentukan zona waktu menggunakan nama zona waktu, CONVERT_TIMEZONE secara otomatis menyesuaikan waktu musim panas (DST), atau protokol musiman lokal lainnya, seperti Waktu Musim Panas, Waktu Standar, atau Waktu Musim Dingin, yang berlaku untuk zona waktu tersebut selama tanggal dan waktu yang ditentukan oleh 'stempel waktu'. Misalnya, 'Eropa/London' mewakili UTC di musim dingin dan menambahkan satu jam di musim panas.

Menggunakan singkatan zona waktu

Untuk melihat daftar singkatan zona waktu saat ini dan lengkap, jalankan perintah berikut.

select pg_timezone_abbrevs();

Hasilnya berisi string yang dipisahkan koma dengan singkatan zona waktu, offset UTC, dan indikator jika zona waktu mengamati penghematan siang hari (atau). t f Misalnya, cuplikan berikut menunjukkan dua baris yang dihasilkan. Baris pertama berisi singkatan untuk Pacific Daylight TimePDT, dengan -07:00:00 offset dari UTC, dan t untuk menunjukkan itu mengamati daylight-saving time. Baris kedua berisi singkatan untuk Waktu Standar PasifikPST, dengan -08:00:00 offset dari UTC, dan f untuk menunjukkan itu tidak mengamati waktu musim panas.

pg_timezone_abbrevs -------------------- (PDT,-07:00:00,t) (PST,-08:00:00,f)

Jalankan pernyataan SQL untuk mendapatkan seluruh daftar dan temukan singkatan berdasarkan indikator offset dan daylight-savings. Sekitar 200 baris dikembalikan.

Singkatan zona waktu mewakili offset tetap dari UTC. Jika Anda menentukan zona waktu menggunakan singkatan zona waktu, CONVERT_TIMEZONE menggunakan offset tetap dari UTC dan tidak menyesuaikan untuk protokol musiman lokal apa pun.

Menggunakan format bergaya POSIX

Spesifikasi zona waktu gaya POSIX adalah dalam bentuk StdOffset atau StdOffsetDST, di mana STD adalah singkatan zona waktu, offset adalah offset numerik dalam jam barat dari UTC, dan DST adalah singkatan zona penghematan siang hari opsional. Waktu penghematan siang hari diasumsikan satu jam lebih cepat dari offset yang diberikan.

Format zona waktu bergaya POSIX menggunakan offset positif di sebelah barat Greenwich, berbeda dengan konvensi ISO-8601, yang menggunakan offset positif di timur Greenwich.

Berikut ini adalah contoh zona waktu bergaya POSIX:

  • PST8

  • PST8PDT

  • EST5

  • EST5EDT

catatan

Amazon Redshift tidak memvalidasi spesifikasi zona waktu gaya POSIX, sehingga dimungkinkan untuk mengatur zona waktu ke nilai yang tidak valid. Misalnya, perintah berikut tidak mengembalikan kesalahan, meskipun menetapkan zona waktu ke nilai yang tidak valid.

set timezone to ‘xxx36’;

Contoh-contoh

Banyak contoh menggunakan kumpulan data sampel TICKIT. Untuk informasi selengkapnya, lihat Contoh database.

Contoh berikut mengkonversi nilai timestamp dari zona waktu UTC default untuk PST.

select convert_timezone('PST', '2008-08-21 07:23:54'); convert_timezone ------------------------ 2008-08-20 23:23:54

Contoh berikut mengkonversi nilai timestamp dalam kolom LISTTIME dari zona waktu UTC default ke PST. Meskipun stempel waktu berada dalam periode waktu siang hari, itu diubah menjadi waktu standar karena zona waktu target ditentukan sebagai singkatan (PST).

select listtime, convert_timezone('PST', listtime) from listing where listid = 16; listtime | convert_timezone --------------------+------------------- 2008-08-24 09:36:12 2008-08-24 01:36:12

Contoh berikut mengonversi timestamp kolom LISTTIME dari zona waktu UTC default ke zona waktu AS/Pasifik. Zona waktu target menggunakan nama zona waktu, dan stempel waktu berada dalam periode waktu siang hari, sehingga fungsi mengembalikan waktu siang hari.

select listtime, convert_timezone('US/Pacific', listtime) from listing where listid = 16; listtime | convert_timezone --------------------+--------------------- 2008-08-24 09:36:12 | 2008-08-24 02:36:12

Contoh berikut mengkonversi string timestamp dari EST ke PST:

select convert_timezone('EST', 'PST', '20080305 12:25:29'); convert_timezone ------------------- 2008-03-05 09:25:29

Contoh berikut mengubah stempel waktu ke Waktu Standar Timur AS karena zona waktu target menggunakan nama zona waktu (America/New_York) dan stempel waktu berada dalam periode waktu standar.

select convert_timezone('America/New_York', '2013-02-01 08:00:00'); convert_timezone --------------------- 2013-02-01 03:00:00 (1 row)

Contoh berikut mengubah stempel waktu menjadi US Eastern Daylight Time karena zona waktu target menggunakan nama zona waktu (America/New_York) dan stempel waktu berada dalam periode waktu siang hari.

select convert_timezone('America/New_York', '2013-06-01 08:00:00'); convert_timezone --------------------- 2013-06-01 04:00:00 (1 row)

Contoh berikut menunjukkan penggunaan offset.

SELECT CONVERT_TIMEZONE('GMT','NEWZONE +2','2014-05-17 12:00:00') as newzone_plus_2, CONVERT_TIMEZONE('GMT','NEWZONE-2:15','2014-05-17 12:00:00') as newzone_minus_2_15, CONVERT_TIMEZONE('GMT','America/Los_Angeles+2','2014-05-17 12:00:00') as la_plus_2, CONVERT_TIMEZONE('GMT','GMT+2','2014-05-17 12:00:00') as gmt_plus_2; newzone_plus_2 | newzone_minus_2_15 | la_plus_2 | gmt_plus_2 ---------------------+---------------------+---------------------+--------------------- 2014-05-17 10:00:00 | 2014-05-17 14:15:00 | 2014-05-17 10:00:00 | 2014-05-17 10:00:00 (1 row)