แชร์ผ่าน


DATEADD

นําไปใช้กับ: คอลัมน์จากการคํานวณตารางจากการคํานวณหน่วยวัดการคํานวณวิชวล

โน้ต

ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสําหรับการใช้งานในการคํานวณวิชวล เนื่องจากอาจแสดงผลลัพธ์ที่ไม่มีความหมาย

ถ้าอินพุตเป็นคอลัมน์วันที่ ระบบจะแสดงตารางที่มีคอลัมน์ของวันที่ เลื่อนไปข้างหน้าหรือย้อนกลับตามจํานวนช่วงเวลาที่ระบุจากวันที่ในบริบทปัจจุบัน
ถ้าข้อมูลป้อนเข้าเป็นปฏิทิน ฟังก์ชันจะแสดงวันที่ที่เลื่อนไปข้างหน้าหรือย้อนกลับตามเวลาตามจํานวนช่วงเวลาที่ระบุโดยยึดตามบริบทปัจจุบัน ผลลัพธ์จะมีคอลัมน์ที่ติดแท็กหลักเช่นเดียวกับคอลัมน์ที่เกี่ยวข้องกับเวลา

วากยสัมพันธ์

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

พารามิเตอร์

เทอม นิยาม
dates or calendar คอลัมน์ที่มีวันที่หรือการอ้างอิงปฏิทิน
number_of_intervals จํานวนเต็มที่ระบุจํานวนช่วงที่จะเพิ่มหรือลบออกจากวันที่
interval ช่วงเวลาที่จะเปลี่ยนวันที่ ค่าสําหรับช่วงอาจเป็นหนึ่งในรายการต่อไปนี้: year, quarter, month, , week, day Enum สัปดาห์จะใช้ได้เฉพาะเมื่อมีการอ้างอิงปฏิทิน
extension ใช้ได้เฉพาะเมื่อมีการอ้างอิงปฏิทิน กําหนดลักษณะการทํางานเมื่อช่วงเวลาเดิมมีวันที่น้อยกว่าช่วงเวลาที่เป็นผลลัพธ์ ค่าที่ถูกต้องคือ: EXTENDING (ค่าเริ่มต้น), PRECISE, ENDALIGNED
truncation ใช้ได้เฉพาะเมื่อมีการอ้างอิงปฏิทิน กําหนดลักษณะการทํางานเมื่อช่วงเวลาเดิมมีวันที่มากกว่าช่วงเวลาที่เป็นผลลัพธ์ ค่าที่ถูกต้องคือ: BLANKS (ค่าเริ่มต้น), ANCHORED

ค่าผลลัพธ์

สําหรับการป้อนข้อมูลคอลัมน์วันที่ ตารางที่มีคอลัมน์ของค่าวันที่เดียว
สําหรับการป้อนข้อมูลในปฏิทิน ตารางที่มีคอลัมน์ที่มีแท็กหลักและคอลัมน์ที่เกี่ยวข้องกับเวลาสําหรับช่วงเวลาที่เลื่อนในบริบทปัจจุบัน

หมาย เหตุ

อาร์กิวเมนต์ dates อาจเป็นรายการใดรายการหนึ่งต่อไปนี้:

  • การอ้างอิงถึงคอลัมน์วันที่/เวลา

  • นิพจน์ตารางที่แสดงคอลัมน์ของค่าวันที่/เวลาหนึ่งคอลัมน์

  • นิพจน์บูลีนที่กําหนดตารางคอลัมน์เดียวของค่าวันที่/เวลา

    โน้ต

    ข้อจํากัดของนิพจน์บูลีนจะอธิบายในหัวข้อ CALCULATE ฟังก์ชัน

  • ถ้าตัวเลขที่ระบุสําหรับ number_of_intervals เป็นค่าบวก วันที่ใน dates จะถูกย้ายไปข้างหน้าในเวลา ถ้าจํานวนเป็นค่าลบ วันที่ใน dates จะเปลี่ยนเป็นเวลาในหนึ่ง

  • พารามิเตอร์ interval คือการแจงนับ ไม่ใช่ชุดของสตริง ดังนั้น ไม่ควรใส่ค่าในเครื่องหมายอัญประกาศ นอกจากนี้ ควรสะกดค่า: year, quarter, month, day แบบเต็มขณะใช้งาน

  • ตารางผลลัพธ์มีเฉพาะวันที่ที่มีอยู่ในคอลัมน์ dates เท่านั้น

  • ถ้ามีการใช้ไวยากรณ์คอลัมน์วันที่และวันที่ในบริบทปัจจุบันไม่ได้กําหนดช่วงเวลาที่ติดกัน ฟังก์ชันจะแสดงข้อผิดพลาด

  • ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสําหรับการใช้งานในโหมด DirectQuery เมื่อใช้ในคอลัมน์จากการคํานวณหรือกฎการรักษาความปลอดภัยระดับแถว (RLS)

ตัวอย่าง - การเลื่อนชุดวันที่

สูตรต่อไปนี้จะคํานวณวันที่เป็นหนึ่งปีก่อนวันที่ในบริบทปัจจุบัน

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

ตัวอย่างสําหรับตัวแสดงเวลาตามปฏิทิน

สูตรต่อไปนี้จะแสดงตารางวันที่ที่เลื่อนกลับไปหนึ่งปีจากวันที่ในบริบทปัจจุบัน

DATEADD ( FiscalCalendar, -1, YEAR )

ลักษณะการทํางานพิเศษเมื่อข้อมูลป้อนเข้าเป็นคอลัมน์วันที่

เมื่อการเลือกมีสองวันสุดท้ายของเดือน DATEADD จะใช้ตรรกะ "ส่วนขยาย" และจะรวมวันจนถึงสิ้นเดือน ตัวอย่างเช่น เมื่อวันที่ 27 และ 28 ก.พ. 2013 รวมอยู่ในการเลือกและเพิ่มเดือน DATEADD จะแสดง 27 มีนาคมเป็น 31

ลักษณะการทํางานนี้เกิดขึ้นเฉพาะเมื่อสองวันที่ผ่านมาของเดือนรวมอยู่ในการเลือก หากเลือกเฉพาะวันที่ 27 ก.พ. เท่านั้น จะไปยังวันที่ 27 มีนาคม

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

ตัวแสดงเวลาตามปฏิทินให้การควบคุมที่มากขึ้นผ่านพารามิเตอร์ตัวเลือกสองตัว: "ส่วนขยาย" และ "การตัดทอน" โปรดดูคําอธิบายพารามิเตอร์ข้างต้นสําหรับรายละเอียด

ลักษณะการทํางานสําหรับ DateAdd ตามปฏิทินเมื่อการเลือกอยู่ในระดับที่ดีกว่าระดับการเลื่อน

เมื่อมีการใช้การอ้างอิงปฏิทินและการเลือกอยู่ในระดับที่ดีกว่าระดับการเลื่อน จะใช้วิธีการตามดัชนี เพื่อแสดงลักษณะการทํางานนี้ มาพิจารณาสถานการณ์จําลองที่การเลือกอยู่ในระดับวันที่และ DATEADD() จะเลื่อนตามเดือน นี่คือสิ่งที่ DateAdd จะทํา:

  • กําหนดตําแหน่งของการเลือกปัจจุบันภายในเดือน
    ตัวอย่างเช่น ถ้าการเลือกปัจจุบันครอบคลุมวันที่ 3-10 มีนาคม ตําแหน่งจะมาจากวันที่ 3 ถึงวันที่ 10 ของเดือน

  • เลื่อนเดือนใช้กะเดือน — เช่น การเปลี่ยนแปลง +1 เดือนมีนาคมเป็นเมษายน

  • ส่งกลับตําแหน่งสัมพัทธ์เดียวกันในเดือนที่เลื่อนออก เรียกใช้ครั้งที่ 3 ไปยังวันที่ 10 ของเดือนใหม่ (เช่น 3– 10 เมษายน)

พารามิเตอร์สําหรับ DateAdd ตามปฏิทินเมื่อการเลือกอยู่ในระดับที่ดีกว่าระดับการเลื่อน

เมื่อกรานูลาริตี้ของการเลือก ดีกว่า หน่วยการเปลี่ยนแปลง (เช่น การเลือกวันที่แต่ละรายการในขณะเปลี่ยนตามเดือน) ลักษณะการทํางานตามดัชนี อาจนําไปสู่ ความคลุมเครือ โดยเฉพาะในช่วงหลายเดือนที่มีความยาวแตกต่างกัน หากต้องการจัดการกรณีขอบเหล่านี้ จะมีการแนะนําพารามิเตอร์สองตัว:

พารามิเตอร์ส่วนขยาย (สําหรับ→ขนาดเล็ก การเปลี่ยนช่วงเวลาขนาดใหญ่):

ควบคุมลักษณะการทํางานของฟังก์ชันเมื่อระยะเวลาปลายทาง นานกว่า ระยะเวลาปัจจุบัน ใช้การเลื่อนไปข้างหน้าหนึ่งเดือนเป็นตัวอย่าง:

  • Precise: เก็บช่วงวันที่เดิมไว้อย่างเคร่งครัด
    Feb 25–28 →→March 25–28

  • Extending: อนุญาตให้หน้าต่างขยายไปยัง จุดสิ้นสุดของรอบระยะเวลา ถ้าจําเป็น
    Feb 25–28 →→March 25–31

  • EndAligned: จัดวันที่สิ้นสุดด้วยจุดสิ้นสุดของช่วงเวลาปลายทางเมื่อการเลือกถึงจุดสิ้นสุดของช่วงเวลา; มิฉะนั้น จะรักษาตําแหน่งสัมพัทธ์ไว้
    Feb 28 → → March 31ขณะที่Feb 27March 27

พารามิเตอร์การตัดทอน (สําหรับขนาดใหญ่ →กะขนาดเล็ก)

ควบคุมลักษณะการทํางานของฟังก์ชันเมื่อเดือนปลายทาง สั้นกว่า เดือนปัจจุบัน ใช้การย้ายย้อนหลังหนึ่งเดือนเป็นตัวอย่าง:

  • Anchored: ยึดผลลัพธ์เป็น วันที่ที่ถูกต้องล่าสุด ของช่วงเวลาที่มีขนาดเล็กกว่า
    March 31 →→Feb 28

  • Blanks: ส่งกลับ ค่าว่าง เมื่อไม่มีวันที่เปลี่ยน
    March 31 → → (ว่าง) (ตั้งแต่เดือนกุมภาพันธ์ไม่มี 31st)

ความแตกต่างในลักษณะการทํางานระหว่างตัวแสดงเวลาแบบคลาสสิกและปฏิทิน

สถานการณ์บางอย่างอาจให้ผลลัพธ์ที่แตกต่างกันเมื่อเปรียบเทียบตัวแสดงเวลาแบบคลาสสิกและปฏิทิน ตัวอย่างเช่น ในปีจันทรคติ SamePeriodLastYear จะสร้างผลลัพธ์ที่แตกต่างกันที่กรานูลาริตี้ของวันที่ ในตัวแสดงเวลาตามปฏิทิน ให้เปลี่ยนวันที่ 29 ก.พ. 2008 ย้อนกลับไปหนึ่งปี ในวันที่ 1 มีนาคม 2007 เนื่องจากถือว่าเป็นวันที่ 60 ของปี ในตัวแสดงเวลาแบบคลาสสิก การเลื่อนเดียวกันจะส่งกลับค่า 28 ก.พ. 2007 การแก้ไขปัญหาชั่วคราวคือการใช้ DATEADD(ปฏิทิน< จํานวนปี> เดือน) ตัวอย่างเช่น ถ้าปีมี 13 เดือนในปฏิทิน ให้ใช้ DATEADD(ปฏิทิน -13 เดือน) วิธีการนี้จะเลื่อนไปตามเดือน ดังนั้นเดือนก.พ. 2008 จะไปถึงก.พ. 2007

ฟังก์ชันตัวแสดงเวลา ฟังก์ชันวันที่และเวลา