ผู้เขียน หัวข้อ: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ  (อ่าน 9220 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ Vegeta

  • Full Member
  • ***
  • กระทู้: 118
  • Respect: +1
    • ดูรายละเอียด
ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
« เมื่อ: สิงหาคม 19, 2009, 09:54:12 AM »
0
ขอความช่วยเหลือคำสั่งเทียบเวลา ครับ
อยากนับรายการห้อง Lab แยกรายการ ที่มีเวลาน้อยกว่า 45 นาทีครับ
เช่น CBC เริ่มรับ Lab จนได้รายงานผล น้อยกว่า 45 นาที มีกี่คน ครับผม

ลองมา 1 วัน ได้แต่เวลาแต่นับไม่ถูกครับ
ขอบคุณครับ
ถึงจะอยู่ในที่มืด แต่ก็มองเห็นในที่สว่าง

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
« ตอบกลับ #1 เมื่อ: สิงหาคม 19, 2009, 11:20:15 AM »
0
ใช้แบบนี้ก็ได้นะครับ
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
    ->                 '2000:01:01 00:00:00.000001');
        -> '-00:00:00.000001'
mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
    ->                 '1997-12-30 01:01:01.000002');
        -> '46:58:57.999999'

พอได้ค่าก็ as เก็บไว้ตัวแปลหนึ่ง แล้วนำไปเปลี่ยนเทียบใน where ว่าเราต้องการให้ > หรือ <

เช่น SELECT TIMEDIFF('1997-12-31 23:59:59.000001','1997-12-30 01:01:01.000002') as test1 ;
       ผลที่ได้คือ test1 จะมีค่าเท่ากับ '46:58:57.999999'

จากนั้นก็เอา test1 มาใส่ที่ where ได้ครับ test1 > หรือ test1 < กว่าก็ได้ครับ

ผมบอกแค่แนวคิดละกันนะครับ อิอิอิ
 
ชื่อ นาย เกรียงไกร  ทาฤทธิ์
โรงพยาบาลสมุทรปราการ
ยังไม่ได้ทำอย่าบอกว่า ทำไม่ได้
mail perjer4675[at]hotmail.com
เว็บส่วนตัว www.perjer.net

ออฟไลน์ Vegeta

  • Full Member
  • ***
  • กระทู้: 118
  • Respect: +1
    • ดูรายละเอียด
Re: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
« ตอบกลับ #2 เมื่อ: สิงหาคม 19, 2009, 11:41:09 AM »
0
แบบนี้น่าจะใช้ได้ นะครับ
ลองปรับตามความต้องการดู ครับ
อ้าว! ถามเอง ตอบเอง

select l.form_name ,i.lab_items_name,count(o.lab_items_code) as count_order
from lab_form l
left outer join lab_items i on i.lab_items_code = l.lab_items_code
left outer join lab_order o on o.lab_items_code = i.lab_items_code
   and o.lab_order_number in
     ( select lab_order_number from lab_head where (order_date
       between "2009-07-01" and "2009-07-31")
       and (sec_to_time(time_to_sec(report_time)-time_to_sec(order_time)) > '00:45:00')
        and (department = 'OPD' )
        )

group by l.form_name ,i.lab_items_name

order by l.form_name,i.lab_items_name
ถึงจะอยู่ในที่มืด แต่ก็มองเห็นในที่สว่าง

ออฟไลน์ atit

  • Hero Member
  • *****
  • กระทู้: 1,233
  • ขออภัย ความรู้ไม่มาก
  • Respect: +3
    • ดูรายละเอียด
Re: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
« ตอบกลับ #3 เมื่อ: สิงหาคม 19, 2009, 16:17:05 PM »
0
แบบนี้น่าจะใช้ได้ นะครับ
ลองปรับตามความต้องการดู ครับ
อ้าว! ถามเอง ตอบเอง

select l.form_name ,i.lab_items_name,count(o.lab_items_code) as count_order
from lab_form l
left outer join lab_items i on i.lab_items_code = l.lab_items_code
left outer join lab_order o on o.lab_items_code = i.lab_items_code
   and o.lab_order_number in
     ( select lab_order_number from lab_head where (order_date
       between "2009-07-01" and "2009-07-31")
       and (sec_to_time(time_to_sec(report_time)-time_to_sec(receive_time)) > '00:45:00')
        and (department = 'OPD' )
        )

group by l.form_name ,i.lab_items_name

order by l.form_name,i.lab_items_name
ขออนุญาติแก้ไขให้ถูกต้องนะครับเพราะเวลาที่ต้องเริ่มนับคือเมื่อห้อง lab ทำการรับ specimen เพื่อตรวจครับถ้าเอาเวลาที่สั่งบางทีคนไข้ไปค้างที่ห้องอื่นยังมาไม่ถึงห้อง lab ก็จะเกิน 45 นาทีครับ ;D
"-"           รู้อะไรไม่สู้รู้วิชา รู้จักหาในบอร์ดเป็นยอดคน                   tel 081-3202497 
ความรู้เพียงเล็กน้อย อาจช่วยคนเป็นร้อยแก้ปัญหา
เพราะฉะนั้น อย่ากลัวที่จะบอกสิ่งที่คุณรู้กับคนอื่น แม้จะเป็นเรื่องพื้นๆ ก็ตาม
cen-os 64 bit ,ram 4 g ,my sql 5.1.33
วิธีแนะนำตัวเอง  http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=4413.0
ก่อนตั้งกระทู้ใหม่ ลองหาดูกระทู่เก่าก่อนดีบ่? อาจได้คำตอบเร็วกว่าเด้อ   http://hosxp.net/index.php?option=com_smf&Itemid=28&action=search
วิธีขอบคุณผู้ที่ตอบคำถามถูกใจ   http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=8180.0
การเปิดใช้ Server แยก เก็บรูปภาพ/log http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=10169.0
การติดตั้ง mysql http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=11513.0
sql วันละคำกับคุณperjer http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=4007.0
8)ยินดีต้อนรับสู่สังคมแห่งการแบ่งปัน- การแบ่งปันทำให้สังคมน่าอยู่- ;Dขอขอบคุณ
- อ.mn ผู้เขียนโปรแกรมดีๆและช่วยขึ้นระบบ
- อ.อ๊อด,อ.นาจ,อ.ขวด,อ.โก้,อ.nutawut,อ.ตั๊ก,อ.JD,อ.กิจ...ที่คอยช่วยเหลือและให้ความรู้
- ทุกท่านที่ช่วย review โปรแกรมทำให้เราได้ใช้โปรแกรมที่สุดยอด(อยากให้เป็นโปรแกรมระดับประเทศเร็วๆจังจะได้ไม่ต้องง้อ สปสช 5555 :D)

ออฟไลน์ thannawe

  • Hero Member
  • *****
  • กระทู้: 2,904
  • Respect: +8
    • ดูรายละเอียด
Re: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
« ตอบกลับ #4 เมื่อ: สิงหาคม 19, 2009, 19:49:31 PM »
0
แบบนี้น่าจะใช้ได้ นะครับ
ลองปรับตามความต้องการดู ครับ
อ้าว! ถามเอง ตอบเอง

select l.form_name ,i.lab_items_name,count(o.lab_items_code) as count_order
from lab_form l
left outer join lab_items i on i.lab_items_code = l.lab_items_code
left outer join lab_order o on o.lab_items_code = i.lab_items_code
   and o.lab_order_number in
     ( select lab_order_number from lab_head where (order_date
       between "2009-07-01" and "2009-07-31")
       and (sec_to_time(time_to_sec(report_time)-time_to_sec(order_time)) > '00:45:00')
        and (department = 'OPD' )
        )

group by l.form_name ,i.lab_items_name

order by l.form_name,i.lab_items_name
แหล่ม
แบบนี้น่าจะใช้ได้ นะครับ
ลองปรับตามความต้องการดู ครับ
อ้าว! ถามเอง ตอบเอง

select l.form_name ,i.lab_items_name,count(o.lab_items_code) as count_order
from lab_form l
left outer join lab_items i on i.lab_items_code = l.lab_items_code
left outer join lab_order o on o.lab_items_code = i.lab_items_code
   and o.lab_order_number in
     ( select lab_order_number from lab_head where (order_date
       between "2009-07-01" and "2009-07-31")
       and (sec_to_time(time_to_sec(report_time)-time_to_sec(receive_time)) > '00:45:00')
        and (department = 'OPD' )
        )

group by l.form_name ,i.lab_items_name

order by l.form_name,i.lab_items_name
ขออนุญาติแก้ไขให้ถูกต้องนะครับเพราะเวลาที่ต้องเริ่มนับคือเมื่อห้อง lab ทำการรับ specimen เพื่อตรวจครับถ้าเอาเวลาที่สั่งบางทีคนไข้ไปค้างที่ห้องอื่นยังมาไม่ถึงห้อง lab ก็จะเกิน 45 นาทีครับ ;D
สู้ดยอด!!   เอาไปคนละ thank
กิจจา ชาญธัญกรรม
นักวิชาการคอมพิวเตอร์ชำนาญการ รพ.โพธาราม จ.ราชบุรี
็HOSxP XE