ความเป็นมา: ฉันต้องสร้างบางตารางในมุมมองที่แสดงเอนทิตีที่มีสถานะบางอย่าง (ตามฟิลด์อนุกรมวิธาน) เป็นเวลา x จำนวนวันทำการ ฉันได้ตั้งค่าฟิลด์และกฎแล้ว เพื่อให้ทุกครั้งที่เอนทิตีเปลี่ยนสถานะ ฟิลด์วันที่และเวลาจะเต็มไปด้วยวันที่และเวลาปัจจุบัน
ต่อไป ฉันสร้างโมดูลแบบกำหนดเองที่เพิ่มฟิลด์แบบกำหนดเองในมุมมองที่แสดงจำนวนวันทำการที่ผ่านไปนับตั้งแต่วันที่และเวลา ฉันคิดว่าทุกอย่างดูวุ่นวายจนกระทั่งฉันรู้ว่าฉันไม่สามารถกรองฟิลด์ที่กำหนดเองเหล่านี้ได้ (ด้วยเหตุผลที่ฉันทราบดี)
ดังนั้นฉันจึงกลับไปที่กระดานวาดภาพบางส่วนเพื่อทำซ้ำแนวคิดนี้ แต่เป็นตัวกรองแบบกำหนดเองแทนที่จะเป็นฟิลด์... แต่ฉันมีปัญหาในการหาวิธีสร้างตัวกรองแบบกำหนดเองนี้ในโมดูลของฉัน ฉันคิดว่าฉันสามารถนำสคริปต์ php ที่ใช้ช่องวันที่และวันที่ปัจจุบันมาใช้ซ้ำเพื่อคำนวณจำนวนวันทำการที่ผ่านไป
ยกเว้นข้อกำหนดของวันทำการ ฉันเกือบจะทำสิ่งที่ต้องการได้ทันทีโดยใช้ตัวกรองวันที่ดูที่มีตัวดำเนินการ "น้อยกว่าหรือเท่ากับ" และค่าออฟเซ็ต (ดังนั้นฉันจึงต้องการแสดงเฉพาะเอนทิตีที่เก่ากว่า มากกว่าสองวัน ผมจึงใช้ "-2 วัน" เป็นค่า)
แก้ไข: ฉันคิดว่าฉันคิดออกแล้ว
นี่คือสิ่งที่ฉันคิดว่าจะเป็นกระบวนการในการสร้างแบบสอบถาม SQL ของเราที่ใช้วันทำงานแทนวันในปฏิทิน (ตัวแปรที่ฉันสร้างมีไว้สำหรับตัวอย่างนี้ ไม่ใช่สิ่งที่ฉันจะใช้ในโค้ดอย่างแท้จริง):
รับวันและเวลาปัจจุบัน (สำหรับตัวอย่างนี้ เราจะเรียกสิ่งนั้นว่า $date) และป้อนลงในสคริปต์ PHP ที่แยกวันเมื่อ 2 วันทำการก่อน สำหรับตัวอย่างนี้ ผมจะเรียกว่า $oldDate
ถ้าวันที่วันนี้คือ 2/7/22 ก็จะเป็น 2/3/22 ถ้าวันที่วันนี้คือ 2/10/22 ก็จะเป็น 2/8/22
ลบ $oldDate จาก $date เราจะเรียกค่านี้ว่า $day
ถ้าวันที่วันนี้คือ 2/7/22 ก็จะเป็น 4 ถ้าวันนี้คือ 2/10/22 ก็จะเป็น 2
หลาย $days โดย 86400 ซึ่งเป็นจำนวนวินาทีใน 1 วัน
ถ้าวันที่วันนี้คือ 2/7/22 จะเป็น 345,600 ถ้าวันที่วันนี้คือ 22/2/10 จะเป็น 172800 เราจะเรียกค่านี้ว่า $วินาที
จากนั้นแบบสอบถาม SQL ของเราจะเป็น node_field_data.created <= $unixDate-$seconds