BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: Vegeta ที่ สิงหาคม 19, 2009, 09:54:12 AM

หัวข้อ: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
เริ่มหัวข้อโดย: Vegeta ที่ สิงหาคม 19, 2009, 09:54:12 AM
ขอความช่วยเหลือคำสั่งเทียบเวลา ครับ
อยากนับรายการห้อง Lab แยกรายการ ที่มีเวลาน้อยกว่า 45 นาทีครับ
เช่น CBC เริ่มรับ Lab จนได้รายงานผล น้อยกว่า 45 นาที มีกี่คน ครับผม

ลองมา 1 วัน ได้แต่เวลาแต่นับไม่ถูกครับ
ขอบคุณครับ
หัวข้อ: Re: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
เริ่มหัวข้อโดย: perjer4675 ที่ สิงหาคม 19, 2009, 11:20:15 AM
ใช้แบบนี้ก็ได้นะครับ
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 < กว่าก็ได้ครับ

ผมบอกแค่แนวคิดละกันนะครับ อิอิอิ
 
หัวข้อ: Re: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
เริ่มหัวข้อโดย: Vegeta ที่ สิงหาคม 19, 2009, 11:41:09 AM
แบบนี้น่าจะใช้ได้ นะครับ
ลองปรับตามความต้องการดู ครับ
อ้าว! ถามเอง ตอบเอง

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
หัวข้อ: Re: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
เริ่มหัวข้อโดย: atit ที่ สิงหาคม 19, 2009, 16:17:05 PM
แบบนี้น่าจะใช้ได้ นะครับ
ลองปรับตามความต้องการดู ครับ
อ้าว! ถามเอง ตอบเอง

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
หัวข้อ: Re: ขอคำสั่ง SQL เทียบเวลาหน่อยครับ
เริ่มหัวข้อโดย: thannawe ที่ สิงหาคม 19, 2009, 19:49:31 PM
แบบนี้น่าจะใช้ได้ นะครับ
ลองปรับตามความต้องการดู ครับ
อ้าว! ถามเอง ตอบเอง

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