Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: kolom terhitung![]()
Tabel terhitung
Ukur
Perhitungan visual
Nota
Fungsi ini tidak disarankan untuk digunakan dalam perhitungan visual karena kemungkinan mengembalikan hasil yang tidak berarti.
Jika input adalah kolom tanggal, mengembalikan tabel yang berisi kolom tanggal, digeser maju atau mundur tepat waktu dengan jumlah interval yang ditentukan dari tanggal dalam konteks saat ini.
Jika input adalah kalender, fungsi mengembalikan tanggal yang digeser ke depan atau mundur dalam waktu dengan jumlah interval yang ditentukan, berdasarkan konteks saat ini. Output mencakup kolom utama yang ditandai serta kolom terkait waktu.
Sintaksis
DATEADD(<dates> or <calendar>, <number_of_intervals>, <interval>[,<Extension>],[,<Truncation>])
Parameter
| Istilah | Definisi |
|---|---|
dates or calendar |
Kolom yang berisi tanggal atau referensi kalender. |
number_of_intervals |
Bilangan bulat yang menentukan jumlah interval untuk ditambahkan atau dikurangi dari tanggal. |
interval |
Interval untuk menggeser tanggal. Nilai untuk interval dapat berupa salah satu hal berikut: year, , quarter, monthweek, day. Enum minggu hanya berlaku ketika referensi kalender disediakan. |
extension |
Hanya berlaku saat referensi kalender disediakan. Tentukan perilaku ketika periode waktu asli memiliki lebih sedikit tanggal daripada periode waktu yang dihasilkan. Nilai yang valid adalah: EXTENDING (Default), PRECISE, ENDALIGNED. |
truncation |
Hanya berlaku saat referensi kalender disediakan. Tentukan perilaku ketika periode waktu asli memiliki lebih banyak tanggal daripada periode waktu yang dihasilkan. Nilai yang valid adalah: BLANKS (Default), ANCHORED. |
Mengembalikan nilai
Untuk input kolom tanggal, tabel yang berisi satu kolom nilai tanggal.
Untuk input kalender, tabel yang berisi semua kolom utama yang ditandai dan kolom terkait waktu untuk periode yang digeser, dalam konteks saat ini.
Komentar
Argumen dates dapat berupa salah satu hal berikut:
Referensi ke kolom tanggal/waktu,
Ekspresi tabel yang mengembalikan satu kolom nilai tanggal/waktu,
Ekspresi Boolean yang menentukan tabel kolom tunggal dari nilai tanggal/waktu.
Nota
Batasan pada ekspresi Boolean dijelaskan dalam topik, CALCULATE fungsi.
Jika angka yang ditentukan untuk
number_of_intervalspositif, tanggal dalamdatesdipindahkan tepat waktu; jika angka negatif, tanggal dalamdatesdigeser kembali ke waktu.Parameter
intervaladalah enumerasi, bukan sekumpulan string; oleh karena itu, nilai tidak boleh diapit dalam tanda kutip. Selain itu, nilai:year,quarter,month,dayharus dieja secara penuh saat menggunakannya.Tabel hasil hanya menyertakan tanggal yang ada di kolom
dates.Jika sintaks kolom tanggal digunakan dan tanggal dalam konteks saat ini tidak membentuk interval yang berdampingan, fungsi mengembalikan kesalahan.
-
Fungsi ini tidak didukung untuk digunakan dalam mode DirectQuery saat digunakan dalam kolom terhitung atau aturan keamanan tingkat baris (RLS).
Contoh - Menggeser sekumpulan tanggal
Rumus berikut menghitung tanggal yang satu tahun sebelum tanggal dalam konteks saat ini.
= DATEADD ( DateTime[DateKey], -1, YEAR )
Contoh untuk kecerdasan waktu berbasis kalender
Rumus berikut mengembalikan tabel tanggal yang digeser satu tahun ke belakang dari tanggal dalam konteks saat ini.
DATEADD ( FiscalCalendar, -1, YEAR )
Perilaku khusus saat input adalah kolom tanggal
Ketika pilihan mencakup dua hari terakhir dalam sebulan, DATEADD akan menggunakan semantik "ekstensi" dan akan menyertakan hari-hari hingga akhir bulan. Misalnya, ketika 27 dan 28 Feb 2013 disertakan dalam pilihan dan sebulan ditambahkan, DATEADD akan mengembalikan 27 hingga 31 Maret.
Perilaku ini hanya terjadi ketika dua hari terakhir dalam bulan disertakan dalam pilihan. Jika hanya 27 Feb yang dipilih, itu akan masuk ke 27 Maret.
= DATEADD(DateTime[DateKey], 1, month)
Kecerdasan waktu berbasis kalender memberikan kontrol lebih melalui dua parameter opsional: "Ekstensi" dan "Pemotongan". Silakan lihat deskripsi parameter di atas untuk detailnya.
Perilaku untuk DateAdd berbasis kalender saat pilihan berada pada butir yang lebih halus daripada tingkat shift
Saat referensi kalender digunakan dan pilihan berada pada butir yang lebih halus daripada tingkat pergeseran, pendekatan berbasis indeks diambil. Untuk mengilustrasikan perilaku ini, mari kita pertimbangkan skenario di mana pilihan berada pada tingkat tanggal dan DATEADD() bergeser berdasarkan bulan. Berikut adalah apa yang akan dilakukan DateAdd:
Tentukan posisi pilihan saat ini dalam sebulan.
Misalnya, jika pilihan saat ini mencakup 3–10 Maret, posisinya adalah dari hari ke-3 hingga ke-10 dalam sebulan.Geser bulan Terapkan pergeseran bulan — misalnya, pergeseran +1 berubah Maret ke April.
Mengembalikan posisi relatif yang sama pada bulan yang digeser Ambil yang ke-3 ke 10 bulan baru (misalnya, 3–10 April).
Parameter untuk DateAdd berbasis kalender saat pilihan berada pada butir yang lebih halus daripada tingkat shift
Ketika granularitas pemilihan lebih halus daripada unit shift (misalnya, memilih tanggal individual saat bergeser menurut bulan), perilaku berbasis indeks dapat menyebabkan ambiguitas, terutama di seluruh bulan dengan panjang yang bervariasi. Untuk menangani kasus tepi ini, dua parameter diperkenalkan:
Parameter ekstensi (untuk pergeseran periode besar → kecil):
Mengontrol bagaimana fungsi berperilaku ketika periode tujuan lebih panjang dari yang saat ini. Gunakan bergerak maju satu bulan sebagai contoh:
Precise: Menjaga rentang tanggal asli dengan ketat.
Feb 25–28→ →March 25–28Extending: Memungkinkan jendela untuk memperluas ke akhir periode jika diperlukan.
Feb 25–28→ →March 25–31EndAligned: Menyelaraskan tanggal akhir dengan akhir periode tujuan saat pilihan mencapai akhir periodenya; jika tidak, pertahankan posisi relatif.
Feb 28→ →March 31, saatFeb 27→March 27
Parameter Pemotongan (untuk pergeseran periode kecil → besar)
Mengontrol bagaimana fungsi berkinerja ketika bulan tujuan lebih pendek dari yang saat ini. Gunakan bergerak mundur satu bulan sebagai contoh:
Anchored: Jangkar hasil ke tanggal valid terakhir dari periode yang lebih kecil.
March 31→ →Feb 28Blanks: Mengembalikan kosong saat tanggal yang digeser tidak ada.
March 31→ → (kosong) (sejak Februari tidak memiliki tanggal 31)
Perbedaan perilaku antara kecerdasan waktu klasik dan kalender
Beberapa skenario mungkin menghasilkan hasil yang berbeda saat membandingkan kecerdasan waktu klasik dan kalender. Misalnya, pada tahun bulan, SamePeriodLastYear akan menghasilkan hasil yang berbeda pada granularitas tanggal. Dalam kecerdasan waktu berbasis kalender, menggeser Feb 29 2008 kembali satu tahun menghasilkan 1 Mar 2007, karena diperlakukan sebagai hari ke-60 dalam setahun. Dalam kecerdasan waktu klasik, shift yang sama mengembalikan Feb 28 2007. Solusinya adalah menggunakan DATEADD(Kalender, -<jumlah tahun>, bulan). Misalnya, jika setahun memiliki 13 bulan di kalender, gunakan DATEADD(Kalender, -13, bulan). Pendekatan ini akan bergeser setiap bulan sehingga Feb 2008 akan pergi ke Feb 2007.