[PHP]
ขอปรึกษาในเรื่องของการตรวจสอบช่วงวันที่ในการเก็บข้อมูลแบบ 2ฟิว
ความคิดผม(ไม่แน่ใจนะครับว่าเป็นวิธีที่ดีที่สุดป่าว?)
ผมจะสร้าง 2 ตาราง
1. ตาราง tbl_leave ใช้เก็บข้อมูลของผู้ลาทั้งหมด ได้แก่ ชื่อ เบอร์โทร เมล์ วันเริ่มลา วันสิ้นสุดการลา วันเวลาที่บันทึกข้อมูล ip
2. ตาราง tbl_leave_date จะเก็บวันย่อยของรายการที่ทำลานั้นๆ โดยจะเก็บ id ของตาราง tbl_leave เพื่อเป็น FK ง่ายต่อการใช้งานต่อไป ตย.
ผมออกแบบให้ตาราง tbl_leave_date มีฟิลด์ id ,ref_leave_id(อ้างอิง),leave_date
คุณลา 17-20 ในตาราง tbl_leave_date ก็จะเก็บ
id | ref_leave_id | leave_date
1 | 1 | 2015-09-17
2 | 1 | 2015-09-18
3 | 1 | 2015-09-19
4 | 1 | 2015-09-20
****แนะนำ ให้คุณออกแบบตารางแยกตารางข้อมูลส่วนบุคคลออกไปอีกตารางนึงจะดีกว่ามาก แล้วอ้างอิง FK ของ id มาใส่ใน 2 ตารางนี้ด้วย เพื่อความถูกต้องของข้อมูลและง่ายต่อการใช้งาน
ปล. ไม่แน่ใจว่าเข้าใจที่บอกรึป่าวนะ
Date :
2015-09-17 15:59:51
By :
arm8957
แล้วคนเก่าออกแบบไว้ยังไงละครับ?
Date :
2015-09-17 16:29:16
By :
arm8957
ก็ทำเพิ่มไปอีกตารางนึงไม่ได้หรือครับ? tbl_leave_date ไง อย่างที่แนะนำไป หรือไม่ก็ใช้ datediff หาระยะเวลาของวันที่ลาเอา ยุ่งยากรึป่าวอันนี้ไม่รู้ต้องลองทำดู
Date :
2015-09-17 16:54:44
By :
arm8957
where '$วันที่เป้าหมาย' between start_la and end_la
ถ้ามี record $วันที่เป้าหมาย อยู่ในวันลา
แต่เนื่องจาก type ของวันที่เก็บ ไม่ใช่ datetime และไม่ได้เรียงลำดับความสำคัญ ไว้ซ้ายมือ Y-m-d
ดังนั้นต้องทำการแปลงรูปแบบวันที่ให้ถูกต้องก่อน
where '$วันที่เป้าหมาย' between STR_TO_DATE(start_la,'%d/%m/%Y') and STR_TO_DATE(end_la,'%d/%m/%Y')
และ $วันที่เป้าหมายก็ต้องอยู่ในรูปแบบ Y-m-d ด้วยนะครับ
ปล. ถ้าเปลี่ยน type ได้ก็เปลี่ยนซะดีกว่าครับ แต่คิดว่าคงยาก เพราะต้องไล่เปลี่ยนโค๊ดที่เกี่ยวข้องด้วย
Date :
2015-09-18 06:44:17
By :
NewbiePHP
ตกลงแก้ปัญหายังไงครับ เผื่อท่านอื่นเค้ามีปัญหาเหมือนกัน จะได้เป็นแนวทางครับ
Date :
2015-09-18 13:42:44
By :
arm8957
Load balance : Server 04