All Products
Search
Document Center

MaxCompute:WEEKOFYEAR

Last Updated:Mar 26, 2026

Mengembalikan nomor minggu dalam tahun untuk tanggal tertentu. Gunakan parameter date_part untuk menentukan hari yang menjadi awal minggu.

Sintaksis

BIGINT|INT WEEKOFYEAR (STRING|DATETIME|DATE|TIMESTAMP|TIMESTAMP_NTZ <date> [, STRING <date_part>])

Parameter

date (wajib)

Tipe yang diterima: STRING, DATETIME, DATE, TIMESTAMP, atau TIMESTAMP_NTZ.

date_part (opsional)

Nilai STRING yang menentukan hari pertama dalam minggu. Nilai yang valid:

NilaiPerilaku
weekMinggu dimulai pada hari Senin. Setara dengan week(monday).
week(weekday)Minggu dimulai pada hari yang ditentukan. Ganti weekday dengan SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, atau SATURDAY.
isoweekMengikuti ISO 8601: minggu dimulai pada hari Senin, dan minggu pertama dalam tahun harus berisi minimal empat hari.

Jika parameter date_part dihilangkan, minggu dimulai pada hari Senin dan mengikuti aturan batas tahun: minggu yang mencakup 1 Januari termasuk dalam tahun yang memiliki mayoritas hari dalam minggu tersebut (empat hari atau lebih).

Nilai kembali

Mengembalikan BIGINT atau INT tergantung pada tipe input:

Tipe inputTipe nilai kembali
DATETIMEBIGINT
STRING (edisi non-kompatibel Hive)BIGINT
STRING (edisi kompatibel Hive)INT
DATE, TIMESTAMP, TIMESTAMP_NTZINT
Format STRING tidak validNULL
NULLNULL
Tipe lainnyaError

Catatan penggunaan

  • Tipe DATE dan TIMESTAMP tidak didukung di MaxCompute 1.0. Untuk menggunakan tipe ini, aktifkan tipe data MaxCompute 2.0:

    SET odps.sql.type.system.odps2=true;
  • Pada edisi tipe data kompatibel Hive, parameter date_part tidak didukung dan input STRING harus mengikuti format yyyy-mm-dd.

Contoh

Contoh 1: Penetapan minggu di batas tahun

Ketika parameter date_part dihilangkan, minggu di batas tahun termasuk dalam tahun yang memiliki mayoritas hari dalam minggu tersebut.

-- 2024-12-29 berada dalam minggu yang mayoritas harinya jatuh di tahun 2024.
-- Mengembalikan 52.
SELECT WEEKOFYEAR(TO_DATE('20241229', 'YYYYMMDD'));

-- Minggu 2025-12-29 berlangsung dari Senin 2025-12-29 hingga Minggu 2026-01-04.
-- Empat dari tujuh hari jatuh di tahun 2026, sehingga minggu ini merupakan minggu ke-1 tahun 2026.
-- Mengembalikan 1.
SELECT WEEKOFYEAR(TO_DATE('20251229', 'YYYYMMDD'));

-- 2026-01-01 berada dalam minggu yang sama seperti di atas — minggu ke-1 tahun 2026.
-- Mengembalikan 1.
SELECT WEEKOFYEAR(TO_DATE('20260101', 'YYYYMMDD'));

Contoh 2: Mengatur hari pertama dalam minggu

Parameter date_part mengubah penempatan minggu suatu tanggal. Perhatikan bahwa memberikan week(monday) secara eksplisit menghasilkan nilai berbeda dibandingkan dengan nilai default (tanpa date_part), meskipun keduanya menggunakan Senin sebagai awal minggu.

-- Aktifkan tipe data MaxCompute 2.0 untuk menggunakan tipe DATE.
SET odps.sql.type.system.odps2=true;

-- Default (tanpa date_part): awal minggu Senin dengan ambang batas empat hari.
-- Mengembalikan 14.
SELECT WEEKOFYEAR(DATE '2025-03-31');

-- Atur secara eksplisit agar minggu dimulai pada hari Senin.
-- Mengembalikan 13.
SELECT WEEKOFYEAR(DATE '2025-03-31', 'week(monday)');

-- Minggu dimulai pada hari Minggu.
-- Mengembalikan 13.
SELECT WEEKOFYEAR(DATETIME '2025-03-31 10:32:00', 'week(sunday)');

-- Minggu dimulai pada hari Jumat.
-- Mengembalikan 13.
SELECT WEEKOFYEAR(TIMESTAMP_NTZ '2025-03-31 10:32:00.123', 'week(friday)');

Contoh 3: Penomoran minggu ISO

Gunakan isoweek untuk penomoran minggu sesuai ISO 8601. Minggu dimulai pada hari Senin dan minggu pertama dalam tahun harus berisi minimal empat hari.

SET odps.sql.type.system.odps2=true;

-- Menurut ISO 8601, 2025-01-06 berada dalam minggu ke-2.
-- Mengembalikan 2.
SELECT WEEKOFYEAR(DATE '2025-01-06', 'isoweek');

Contoh 4: Variasi tipe input

-- Input DATETIME mengembalikan BIGINT.
-- Mengembalikan 1.
SELECT WEEKOFYEAR(DATETIME '2025-01-05 10:32:00');

-- DATETIME dengan week(monday) eksplisit.
-- Mengembalikan 0.
SELECT WEEKOFYEAR(DATETIME '2025-01-05 10:32:00', 'week(monday)');

-- Input STRING dalam format yyyy-mm-dd hh:mi:ss.
-- Mengembalikan 27.
SELECT WEEKOFYEAR('2025-07-01 12:30:15');

-- Input TIMESTAMP (memerlukan tipe data MaxCompute 2.0).
SET odps.sql.type.system.odps2=true;
-- Mengembalikan 30.
SELECT WEEKOFYEAR(TIMESTAMP '2025-07-21 00:30:15.123');

Contoh 5: Input NULL dan tidak valid

-- String tidak sesuai format yyyy-mm-dd hh:mi:ss.
-- Mengembalikan NULL.
SELECT WEEKOFYEAR('20141231');

-- Input NULL mengembalikan NULL.
SELECT WEEKOFYEAR(NULL);

Fungsi terkait

WEEKOFYEAR adalah fungsi tanggal. Untuk daftar lengkap fungsi tanggal, lihat Fungsi tanggal.