 |
[PHP]
สอบถามการหาเวลามากกว่า xx นาที หรือ น้อยกว่า xx นาที |
|
 |
|
|
 |
 |
|
เราสามารถที่จะให้ Database ของเราช่วยตอบคำถามนี้ได้ครับขอยกตัวอย่างด้วย MySQL นะครับ
สมมติว่าเราเก็ถบค่า เวลาเข้า, ออก, เวลาที่เข้าสายได้ และ ออกก่อนได้ ลงในตารางตามนี้นะครับ
ClockIN,ClockOUT,LateAfter,LeaveBefore ชื่อ table เป็น TimeConfig
08:00:00,16:00:00,30,30
ClockIN,ClockOUT มีชนิดเป็น TIME ส่วน LateAfter,LeaveBefore มีชนิดเป็น SMALLINT ครับ
คราวนี้เรามาเริ่มในส่วนของ SQL command กันดีกว่า
Code
SELECT (CASE WHEN '07:42:40' BETWEEN ClockIN AND ClockIN + INTERVAL LateAfter MINUTES THEN 1 ELSE 0 END) AS x
(CASE WHEN '15:42:40' BETWEEN ClockOUT AND ClockOUT + INTERVAL LeaveBefore MINUTES THEN 1 ELSE 0 END) AS y
FROM TimeConfig
หลักการก็ประมาณนี้นะครับ ตอนนี้ผมยังไม่ได้ทดสอบกับระบบจริงนะครับ ถ้าผิดพลาดยังไงก็ขออภัยด้วยนะครับ
|
ประวัติการแก้ไข 2012-05-16 18:21:32
 |
 |
 |
 |
Date :
2012-05-16 18:07:54 |
By :
smeproject |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
mysql ไม่มี CASE WHEN ครับ ให้ใช้ if แทนครับ
Go to : SQL MYSQL IF
|
 |
 |
 |
 |
Date :
2012-05-17 12:51:44 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอแก้ไขตามนี้นะครับ
LateAfter และ LeaveBefore นั้นให้เปลี่ยนเป็น DataType => TIME ครับ ส่วนค่าให้เก็บตาม Format นี้ครับ
HH:mm:ss => 00:30:00 คือ 30 นาทีครับผม ส่วน SQL ก็เปลี่ยนเป็นตามนี้ครับ โดยใช้ Function ADDTIME เข้ามาช่วย
SELECT (CASE WHEN '08:12:40' BETWEEN ClockIN AND ADDTIME(ClockIN, LateAfter) THEN 1 ELSE 0 END) AS x,
(CASE WHEN '15:42:40' BETWEEN ClockOUT AND ADDTIME(ClockOUT, LeaveBefore) THEN 1 ELSE 0 END) AS y
FROM TimeConfig
|
 |
 |
 |
 |
Date :
2012-05-17 22:41:39 |
By :
smeproject |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|