Fungsi ISOYEAR mengekstrak tahun ISO 8601 dari date yang ditentukan.
Pengenalan ISO 8601
Tahun ISO 8601 didefinisikan oleh sistem tanggal minggu ISO dan berbeda dari tahun kalender Gregorian. Secara khusus, hari pertama tahun ISO adalah hari Senin dari minggu yang berisi hari Kamis pertama tahun tersebut. Contohnya:
Jika 1 Januari adalah hari Jumat, Sabtu, atau Minggu, minggu itu termasuk dalam minggu terakhir tahun ISO sebelumnya.
Jika 1 Januari adalah hari Senin, Selasa, atau Rabu, minggu itu termasuk dalam minggu pertama tahun ISO baru.
Ini berarti tahun ISO dapat dimulai pada minggu terakhir tahun Gregorian sebelumnya atau berakhir pada minggu pertama tahun Gregorian berikutnya. Definisi ini memastikan bahwa setiap tahun ISO memiliki tepat 52 atau 53 minggu penuh, menyederhanakan perhitungan waktu dan perencanaan lintas tahun.
Sintaksis
INT ISOYEAR(STRING|DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ|INTERVAL <date>)
-- Contoh standar
-- Mengembalikan 2025.
SELECT ISOYEAR(DATE '2025-03-12');Parameter
date: Wajib diisi. Tanggal dari mana tahun ISO akan diekstrak. Tipe data yang didukung adalah DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ, STRING, dan INTERVAL.
Untuk parameter input bertipe STRING, nilainya harus dalam format
yyyy-mm-ddatauyyyy-mm-dd hh:mi:ss.Untuk parameter input bertipe INTERVAL, hanya INTERVAL_YEAR_MONTH yang didukung. INTERVAL_DAY_TIME tidak didukung. Untuk informasi selengkapnya, lihat tipe data INTERVAL.
Nilai pengembalian
Mengembalikan nilai dengan tipe INT. Aturan berikut berlaku:
Jika date bukan bertipe STRING, DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ, atau INTERVAL, atau jika formatnya tidak valid, maka fungsi mengembalikan NULL atau melaporkan kesalahan.
Jika date bernilai NULL, maka fungsi mengembalikan NULL.
Contoh
Contoh 1: Ekstrak tahun ISO dari berbagai tipe tanggal, seperti STRING, DATE, DATETIME, TIMESTAMP, dan TIMESTAMP_NTZ.
-- Aktifkan tipe data MaxCompute V2.0. SET odps.sql.type.system.odps2 = true; -- Input bertipe STRING. String dalam format tanggal standar didukung. -- Mengembalikan 2025. SELECT ISOYEAR('2025-03-12 12:22:00.123'); -- Input bertipe TIMESTAMP. -- Mengembalikan 2025. SELECT ISOYEAR(TIMESTAMP '2025-03-31 12:43:00'); -- Input bertipe DATE. -- Mengembalikan 2025. SELECT ISOYEAR(DATE '2025-01-01'); -- Input bertipe DATETIME. -- Mengembalikan 2024. SELECT ISOYEAR(DATETIME '2024-01-01 12:30:00'); -- Input bertipe TIMESTAMP_NTZ (timestamp tanpa zona waktu). Presisi mikrodetik didukung. -- Mengembalikan 2025. SELECT ISOYEAR(TIMESTAMP_NTZ '2025-06-06 12:43:00.123');Contoh 2: Gunakan tipe INTERVAL_YEAR_MONTH sebagai input langsung.
-- Aktifkan tipe data MaxCompute V2.0. SET odps.sql.type.system.odps2 = true; -- Input adalah interval 1 tahun dan 2 bulan. Komponen tahunnya adalah 1. -- Mengembalikan 1. SELECT ISOYEAR(INTERVAL '1-2' YEAR TO MONTH); -- INTERVAL '14' MONTH setara dengan INTERVAL '1-2' YEAR TO MONTH. -- Mengembalikan 1. SELECT ISOYEAR(INTERVAL '14' MONTH);Contoh 3: Hitung tahun ISO dari hasil operasi aritmetika yang menggabungkan tanggal dan INTERVAL.
-- Aktifkan tipe data MaxCompute V2.0. SET odps.sql.type.system.odps2 = true; -- Tanggal awal 2023-01-01 ditambah interval 1 tahun dan 2 bulan menghasilkan 2024-03-01. Tanggal ini berada dalam tahun ISO 2024. -- Mengembalikan 2024. SELECT ISOYEAR(DATE '2023-01-01' + INTERVAL '1-2' YEAR TO MONTH); -- Kurangi 9 tahun untuk mendapatkan 2014-01-01. Hari tersebut adalah hari Rabu dan termasuk dalam minggu pertama tahun ISO 2014. -- Mengembalikan 2014. SELECT ISOYEAR(DATE '2023-01-01' + INTERVAL '-9' YEAR); -- Tambahkan 11 bulan untuk mendapatkan 2023-12-01. Tanggal ini berada dalam tahun ISO 2023. -- Mengembalikan 2023. SELECT ISOYEAR(DATE '2023-01-01' + INTERVAL '11' MONTH);Contoh 4: Tentukan tahun ISO pada batas akhir tahun.
-- Aktifkan tipe data MaxCompute V2.0. SET odps.sql.type.system.odps2 = true; -- 1 Januari 2023 adalah hari Minggu. Tanggal ini termasuk dalam minggu terakhir tahun ISO 2022. -- Mengembalikan 2022. SELECT ISOYEAR(DATETIME '2023-01-01 12:30:00'); -- 30 Desember 2024 adalah hari Senin. Tanggal ini termasuk dalam minggu pertama tahun ISO 2025. -- Mengembalikan 2025. SELECT ISOYEAR('2024-12-30'); -- 1 Januari 2025 adalah hari Rabu. Tanggal ini termasuk dalam minggu pertama tahun ISO 2025. -- Mengembalikan 2025. SELECT ISOYEAR('2025-01-01 00:00:00');Contoh 5: Tangani input NULL.
-- Jika nilai date adalah NULL, maka NULL dikembalikan. SELECT ISOYEAR(NULL);
Fungsi terkait
Fungsi ISOYEAR merupakan fungsi tanggal. Untuk informasi selengkapnya mengenai fungsi untuk perhitungan dan konversi tanggal, lihat Fungsi tanggal.