รายการยานอกเวลา อันใหม่ของคุณ golf_win
set @t1 = unix_timestamp('2008-06-01')+time_to_sec('20:30:00');
set @t2 = unix_timestamp('2008-06-02')+time_to_sec('08:00:00');
select a.icode,concat(b.name,' ',strength,' (',b.units,')') as drugname ,sum(a.qty) as total,dosageform
FROM opitemrece a
left outer join drugitems b on a.icode=b.icode
left outer join service_time c on c.vn=a.vn
where unix_timestamp(c.vstdate)+time_to_sec(c.service12) between @t1 and @t2
AND a.icode LIKE'1%'
and dep_code in ('011','044')
and a.vstdate between'2008-06-01'and'2013-06-02'
group by a.icode,b.name,strength,b.units,dosageform
order by dosageform,b.name
อันนี้อันล่าสุดของผม
set @t1 = unix_timestamp('2008-09-01')+time_to_sec('15:30:01');
set @t2 = unix_timestamp('2008-09-02')+time_to_sec('08:00:00');
select a.icode,concat(b.name,' ',strength,' (',b.units,')') as drugname ,sum(a.qty) as total,dosageform,b.unitprice, sum_price, a.vstdate
FROM opitemrece a
LEFT OUTER JOIN drugitems b ON a.icode=b.icode
WHERE
(
(unix_timestamp(a.rxdate)+time_to_sec(a.rxtime) between @t1 and @t2
AND time_to_sec(rxtime) > time_to_sec(vsttime))
OR
( time_to_sec(rxtime) < time_to_sec(vsttime)
AND unix_timestamp(ADDDATE(a.rxdate,1))+time_to_sec(a.rxtime) between @t1 and @t2)
)
AND a.icode LIKE'1%'
AND dep_code in ('014')
AND a.vstdate between'2008-06-01'and'2013-06-02'
group by a.icode,b.name,strength,b.units,dosageform
order by dosageform,b.name
ตอนนั้นยังเขียนแบบลูกทุ่งอยู่
แต่หลักๆเพื่อแก้ปัญหาเรื่องข้ามวันแล้ว rxdate ไม่เปลี่ยนตามวันจริง
(ตอนนี้อาจารย์แก้เรื่องนี้แล้ว คงเอาเงื่อนไขออกได้แล้ว)
ที่ต่างกับคุณ golf ชัดๆ
-ผมใช้ rxdate, rxtime ซึ่งเป็นเวลาที่สั่งยาจริง
เท่าที่ออกรายงานมาหลายวัน ค่อนข้างตรงจริงทุกวันครับ เอาอีกตัวไว้ใช้เบิกยาในเวลาเลยด้วยซ้ำ
แต่...จะมีปัญหาเรื่อง จะเอาตามเวลาที่ save การสั่งยาครั้งสุดท้าย ถ้ามีการสั่งยาเพิ่ม
เช่นสั่งยาตัวที่ 1 นอกเวลา แล้วมาสั่งยาเพิ่มอีกตัวในเวลา (ซึ่งเกินเวลาที่รายงานนอกเวลาครอบคลุม)
มันจะเอา rxtime จากเวลาที่ save ครั้งสุดท้ายครับ
ทำให้ไม่มีชื่อในรายงานนอกเวลา หรืออาจมีชื่ออยู่ในทั้งสองรายงาน หากพิมพ์ report ก่อนสั่งยาตัวสอง
นอกนั้นยังไม่เจอปัญหาครับ
เดิมเคยใช้เวลาจาก er_regist แต่พบว่าจะมีปัญหาเวลา admit แล้วเวลาถูกเปลี่ยน เลยเลิกไป
อยากทราบว่าใช้ servicetime มีปัญหาอะไรไหมครับ