หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
นําไปใช้กับ: คอลัมน์จากการคํานวณ![]()
ตารางจากการคํานวณ
หน่วยวัด
การคํานวณวิชวล
โน้ต
ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสําหรับการใช้งานในการคํานวณวิชวล เนื่องจากอาจแสดงผลลัพธ์ที่ไม่มีความหมาย
ถ้าอินพุตเป็นคอลัมน์วันที่ ระบบจะแสดงตารางที่มีคอลัมน์ของวันที่ เลื่อนไปข้างหน้าหรือย้อนกลับตามจํานวนช่วงเวลาที่ระบุจากวันที่ในบริบทปัจจุบัน
ถ้าข้อมูลป้อนเข้าเป็นปฏิทิน ฟังก์ชันจะแสดงวันที่ที่เลื่อนไปข้างหน้าหรือย้อนกลับตามเวลาตามจํานวนช่วงเวลาที่ระบุโดยยึดตามบริบทปัจจุบัน ผลลัพธ์จะมีคอลัมน์ที่ติดแท็กหลักเช่นเดียวกับคอลัมน์ที่เกี่ยวข้องกับเวลา
วากยสัมพันธ์
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–28Extending: อนุญาตให้หน้าต่างขยายไปยัง จุดสิ้นสุดของรอบระยะเวลา ถ้าจําเป็น
Feb 25–28→→March 25–31EndAligned: จัดวันที่สิ้นสุดด้วยจุดสิ้นสุดของช่วงเวลาปลายทางเมื่อการเลือกถึงจุดสิ้นสุดของช่วงเวลา; มิฉะนั้น จะรักษาตําแหน่งสัมพัทธ์ไว้
Feb 28→ →March 31ขณะที่Feb 27→March 27
พารามิเตอร์การตัดทอน (สําหรับขนาดใหญ่ →กะขนาดเล็ก)
ควบคุมลักษณะการทํางานของฟังก์ชันเมื่อเดือนปลายทาง สั้นกว่า เดือนปัจจุบัน ใช้การย้ายย้อนหลังหนึ่งเดือนเป็นตัวอย่าง:
Anchored: ยึดผลลัพธ์เป็น วันที่ที่ถูกต้องล่าสุด ของช่วงเวลาที่มีขนาดเล็กกว่า
March 31→→Feb 28Blanks: ส่งกลับ ค่าว่าง เมื่อไม่มีวันที่เปลี่ยน
March 31→ → (ว่าง) (ตั้งแต่เดือนกุมภาพันธ์ไม่มี 31st)
ความแตกต่างในลักษณะการทํางานระหว่างตัวแสดงเวลาแบบคลาสสิกและปฏิทิน
สถานการณ์บางอย่างอาจให้ผลลัพธ์ที่แตกต่างกันเมื่อเปรียบเทียบตัวแสดงเวลาแบบคลาสสิกและปฏิทิน ตัวอย่างเช่น ในปีจันทรคติ SamePeriodLastYear จะสร้างผลลัพธ์ที่แตกต่างกันที่กรานูลาริตี้ของวันที่ ในตัวแสดงเวลาตามปฏิทิน ให้เปลี่ยนวันที่ 29 ก.พ. 2008 ย้อนกลับไปหนึ่งปี ในวันที่ 1 มีนาคม 2007 เนื่องจากถือว่าเป็นวันที่ 60 ของปี ในตัวแสดงเวลาแบบคลาสสิก การเลื่อนเดียวกันจะส่งกลับค่า 28 ก.พ. 2007 การแก้ไขปัญหาชั่วคราวคือการใช้ DATEADD(ปฏิทิน< จํานวนปี> เดือน) ตัวอย่างเช่น ถ้าปีมี 13 เดือนในปฏิทิน ให้ใช้ DATEADD(ปฏิทิน -13 เดือน) วิธีการนี้จะเลื่อนไปตามเดือน ดังนั้นเดือนก.พ. 2008 จะไปถึงก.พ. 2007
เนื้อหาที่เกี่ยวข้อง
ฟังก์ชันตัวแสดงเวลา ฟังก์ชันวันที่และเวลา