Aracılığıyla paylaş


DATEADD

Şunlar için geçerlidir:Hesaplanan sütunHesaplanan tabloÖlçüGörsel hesaplama

Not

Bu işlev, anlamsız sonuçlar döndürdüğü için görsel hesaplamalarında kullanılması önerilmez.

Giriş bir tarih sütunuysa, geçerli bağlamdaki tarihlerden belirtilen aralık sayısı kadar ileri veya geri kaydırılmış bir tarih sütunu içeren bir tablo döndürür.
Giriş bir takvimse, işlev geçerli bağlama göre belirtilen aralık sayısına göre zamanda ileri veya geri kaydırılan tarihleri döndürür. Çıkış, birincil etiketli sütunların yanı sıra zamanla ilgili sütunları da içerir.

Sözdizimi

DATEADD(<dates> or <calendar>, <number_of_intervals>, <interval>[,<Extension>],[,<Truncation>])

Parametre

Terim Tanım
dates or calendar Tarihler veya takvim başvurusu içeren bir sütun.
number_of_intervals Tarihlere eklenecek veya tarihlerden çıkaracak aralık sayısını belirten bir tamsayı.
interval Tarihlerin kaydırıldığı aralık. Aralık değeri aşağıdakilerden biri olabilir: year, quarter, month, week, . day Hafta sabit listesi yalnızca takvim başvurusu sağlandığında geçerlidir.
extension Yalnızca takvim başvurusu sağlandığında geçerlidir. Özgün zaman aralığında, sonuçta elde edilen zaman aralığından daha az tarih olduğunda davranışı tanımlayın. Geçerli değerler şunlardır: EXTENDING (Varsayılan), DUYARLI, ENDALIGNED.
truncation Yalnızca takvim başvurusu sağlandığında geçerlidir. Özgün zaman aralığında sonuçta elde edilen dönemden daha fazla tarih olduğunda davranışı tanımlayın. Geçerli değerler şunlardır: BLANKS (Varsayılan), ANCHORED.

Dönüş değeri

Tarih sütunu girişi için, tek bir tarih değerleri sütunu içeren bir tablo.
Takvim girişi için, geçerli bağlamda, kaydırılan dönemler için tüm birincil etiketli sütunları ve saatle ilgili sütunları içeren bir tablo.

Açıklamalar

dates bağımsız değişkeni aşağıdakilerden biri olabilir:

  • Tarih/saat sütunu başvurusu,

  • Tarih/saat değerlerinin tek bir sütununu döndüren tablo ifadesi,

  • Tarih/saat değerlerinin tek sütunlu tablosunu tanımlayan Boole ifadesi.

    Not

    Boole ifadelerindeki kısıtlamalar, CALCULATE işlevikonusunda açıklanmıştır.

  • number_of_intervals için belirtilen sayı pozitifse, dates içindeki tarihler zamanda ileri taşınır; sayı negatifse, dates içindeki tarihler zamanda geri kaydırılır.

  • interval parametresi bir dize kümesi değil bir numaralandırmadır; bu nedenle değerler tırnak içine alınmamalıdır. Ayrıca, year, quarter, month, day değerleri kullanılırken tam olarak yazılmalıdır.

  • Sonuç tablosu yalnızca dates sütununda bulunan tarihleri içerir.

  • Tarih sütunu söz dizimi kullanılıyorsa ve geçerli bağlamdaki tarihler bitişik aralık oluşturmuyorsa, işlev bir hata döndürür.

  • Bu işlev, hesaplanan sütunlarda veya satır düzeyi güvenlik (RLS) kurallarında kullanıldığında DirectQuery modunda kullanılmak üzere desteklenmez.

Örnek - Tarih kümesini kaydırma

Aşağıdaki formül, geçerli bağlamdaki tarihlerden bir yıl önceki tarihleri hesaplar.

= DATEADD ( DateTime[DateKey], -1, YEAR )

Takvim tabanlı akıllı zaman gösterimi örneği

Aşağıdaki formül, geçerli bağlamdaki tarihlerden bir yıl geriye kaydırılan bir tarih tablosu döndürür.

DATEADD ( FiscalCalendar, -1, YEAR )

Giriş bir tarih sütunu olduğunda özel davranış

Seçim ayın son iki gününü içerdiğinde " DATEADD uzantı" semantiğini kullanır ve ay sonuna kadar olan günleri içerir. Örneğin, 27 Şubat 2013 ve 28 Şubat 2013 seçime dahil edildiğinde ve bir ay eklendiğinde, DATEADD 27-31 Mart'ı döndürür.

Bu davranış yalnızca ayın son iki günü seçime dahil edildiğinde gerçekleşir. Yalnızca 27 Şubat seçilirse, 27 Mart'a gider.

= DATEADD(DateTime[DateKey], 1, month)

Takvim tabanlı akıllı zaman gösterimi, isteğe bağlı iki parametre aracılığıyla daha fazla denetim sağlar: "Uzantı" ve "Kesme". Ayrıntılar için lütfen yukarıdaki parametre açıklamalarına bakın.

Takvim tabanlı Tarih için davranış Seçim vardiya düzeyinden daha ince bir dilimde olduğunda ekle

Takvim başvurusu kullanıldığında ve seçim vardiya düzeyinden daha ince olduğunda dizin tabanlı bir yaklaşım uygulanır. Bu davranışı göstermek için, seçimin tarih düzeyinde olduğu ve DATEADD() aya göre kaydığı senaryoyu ele alalım. DateAdd şunları yapacaktır:

  • Geçerli seçimin ay içindeki konumlarını belirler.
    Örneğin, geçerli seçim 3-10 Mart tarihleri arasındaysa, pozisyonlar ayın 3. gününden 10. gününe kadardır.

  • Ayı kaydırma Ay vardiyasını uygulayın; örneğin, +1 vardiyası Mart'ı Nisan'a değiştirir.

  • Kaydırılan aydaki aynı göreli konumları döndürme 3.'ünü yeni ayın 10'una alın (örneğin, 3-10 Nisan).

Seçim vardiya düzeyinden daha ince bir dilimde olduğunda takvim tabanlı DateAdd parametreleri

Seçim ayrıntı düzeyi vardiya biriminden daha ince olduğunda (örn. aya göre tek tek tarihleri seçme), dizin tabanlı davranış , özellikle de aylar boyunca değişen uzunluklarda belirsizliklere neden olabilir. Bu uç durumlarını işlemek için iki parametre kullanıma sunulmuştur:

Uzantı parametresi (küçük → büyük dönem vardiyaları için):

Hedef süre geçerli olandan daha uzun olduğunda işlevin nasıl davranacağını denetler. Örnek olarak bir ay ileriye doğru ilerlemeyi kullanın:

  • Precise: Orijinal tarih aralığını kesinlikle korur.
    Feb 25–28 → →March 25–28

  • Extending: Gerekirse pencerenin dönemin sonuna doğru genişletilmesine izin verir.
    Feb 25–28 → →March 25–31

  • EndAligned: Seçim döneminin sonuna ulaştığında bitiş tarihini hedef dönemin sonuyla hizalar; aksi takdirde göreli konumları korur.
    Feb 28 → → March 31Feb 27March 27

Kesme Parametresi (büyük → küçük dönem vardiyaları için)

Hedef ay geçerli aydan kısa olduğunda işlevin nasıl davranacağını denetler. Örnek olarak bir ay geriye doğru ilerlemeyi kullanın:

  • Anchored: Sonucu daha küçük dönemin son geçerli tarihine sabitler.
    March 31 → →Feb 28

  • Blanks: Kaydırılan tarih mevcut olmadığında boş döndürür.
    March 31 → → (boş) (Şubat'ta 31.

Klasik ve takvim akıllı zaman gösterimi arasındaki davranış farklılıkları

Bazı senaryolar klasik ve takvim akıllı zaman gösterimini karşılaştırırken farklı sonuçlar verebilir. Örneğin, ay yılında SamePeriodLastYear tarih ayrıntı düzeyinde farklı sonuçlar üretir. Takvim tabanlı akıllı zaman gösteriminde, 29 Şubat 2008'in bir yıl geriye kaydırılması, yılın 60. günü olarak ele alındığından 1 Mart 2007'de sonuçlanır. Klasik akıllı zaman gösteriminde aynı vardiya 28 Şubat 2007'yi döndürür. Geçici çözüm kullanmaktır DATEADD(Takvim, -<yıl> sayısı, ay). Örneğin, bir yılın takvimde 13 ayı varsa kullanın DATEADD(Takvim, -13, ay). Bu yaklaşım aya göre değiştirileceği için 2008 Şubat 2007'ye geçecektir.

Akıllı zaman gösterimi işlevleriTarih ve saat işlevleri