Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > เรียกดูช่วงวันที่ห่างกันด้วย SQL คือผมทำฐานข้อมูลการตรวจวินิจฉัยโรคในห้องแลปโดยใช้ PHP กับ Database MySQL


เรียกดูช่วงวันที่ห่างกันด้วย SQL คือผมทำฐานข้อมูลการตรวจวินิจฉัยโรคในห้องแลปโดยใช้ PHP กับ Database MySQL

 
Topic : 043379



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์



คือผมทำฐานข้อมูลการตรวจวินิจฉัยโรคในห้องแลปโดยใช้ PHP กับ Database MySQL แล้วมีฟิลด์วันที่ตรวจคนไข้กับฟิลด์วันที่ออกรายงายผลให้คนไข้ซึ่งกำหนดค่าฟิลด์เป็น date ทั้ง2ฟิลด์ เวลาบันทึกข้อมูลก็จะออกแบบนี้ 2010-01-01 ทีนี้ถ้าผมต้องการทราบว่าวันที่ตรวจคนไข้กับวันที่ออกรายงานผลให้คนไข้ (โดยปกติจะไม่ใช่วันเดียวกับ) ห่างกันกี่วัน ใครพอจะมีคำสั่ง SQL เรียกดูช่วงเวลาว่าห่างกันกี่วันได้ไหมครับ



Tag : - - - -

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-05-27 11:06:14 By : ratasart View : 4105 Reply : 11
 

 

No. 1

Guest


datediff(fieldวันที่ออกรายงาน,fieldวันที่ตรวจ)
Date : 2010-05-27 12:39:00 By : ผ่านมา
 

 

No. 2



โพสกระทู้ ( 1,127 )
บทความ ( 2 )



สถานะออฟไลน์


แปลงเป็น mktime() แล้วนำมาลบกัน

จากนั้นใช้ date() แปลงกลับมาเป็นวันครับ

อีกอันไม่แน่ใจ เหมือนจะใช้ฟังชั่น ของ MySQL มาลบกันได้เลย
Date : 2010-05-27 14:29:52 By : iieszz
 

 

No. 3



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุนครับ...แต่มีปัญหาใหม่คือฟิลล์แรกผมใช้การลงแบบเลือกจากปฏิทินบันทึกแบบนี้ครับ 01/01/2553 แล้วก็ประเภทของฟิลล์เป็น varchar ครับ แต่ฟิลล์ที่สองเป็น date ครับ ก็เลยไม่รู้ว่าจะเอามาหาผลต่างของวันได้ไหม ใครทราบช่วยด้วยครับ
Date : 2010-06-01 10:39:47 By : ratasart
 

 

No. 4



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


แปลงจากพศ. เป็น คศ.
Code (PHP)
$thdate='01/01/2553';
$endate=explode("/",$thdate);
$endate=(((int)$endate[2])-543).'-'.$endate[1].'-'.$endate[0]; // ถ้าตรงกลางหมายถึงเดือน


ฟังก์ชั่นหาว่าวันห่างกันเท่าไร
Code (PHP)
function dateDiff($endDate, $beginDate){
    $date_parts1=explode("-", $beginDate);
    $date_parts2=explode("-", $endDate);
    $start_date=gregoriantojd($date_parts1[2], $date_parts1[1], $date_parts1[0]);
    $end_date=gregoriantojd($date_parts2[2], $date_parts2[1], $date_parts2[0]);
    return $end_date - $start_date;
}


Idea ตามนี้ครับ แต่ผมยังไม่ได้ test นะ อาจมี syntax error ติดไปบ้าง
Date : 2010-06-01 11:46:24 By : pnbps
 

 

No. 5



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์


จะลองดูงับ
Date : 2010-06-01 15:40:38 By : ratasart
 

 

No. 6



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แระขอบคุณงับ
Date : 2010-06-04 11:17:27 By : ratasart
 

 

No. 7



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์


รบกวนอีกเรื่องนะคับคือผมใช้โค้ดที่คุน บุญพรหมสุข ให้มาก็ได้ผลครับ แต่ถ้าผมจะเอาข้อมูลช่วงระยะห่างของวันมาทำเป็นกราฟจะมีวิธีดึงยังงัยครับเพราะระยะห่างของวันที่ใช้โค้ดคำนวณมันไม่ได้เป็นค่าที่เก็บในฟิลล์ จะเรียกจากคำสั่ง select ยังงัยดีครับ
Code (PHP)
function DateDiff($strDate1,$strDate2)     
		{                
			return (strtotime($strDate2) - strtotime($strDate1))/  ( 60 * 60 * 24 );
		} 


$sql = "SELECT date_recieve,date_report FROM surgical_specimen";//ไม่รู้จะกำหนดค่าส่วนนี้ยังงัยดี
mysql_query("SET NAMES utf8");
$result = mysql_query($sql);
$diff_1=mysql_num_rows ($result);

while ($fetch_pro = mysql_fetch_array($result))	
		{
			$thdate=$fetch_pro[date_recieve]; 
			$recieve_date=explode("/",$thdate); 
			$recieve_date=(((int)$recieve_date[2])-543).'-'.$recieve_date[1].'-'.$recieve_date[0]; 			
			$different = DateDiff($recieve_date,$fetch_pro[date_report]);

		}

mysql_close($link);

Date : 2010-06-04 13:54:24 By : ratasart
 

 

No. 8



โพสกระทู้ ( 35 )
บทความ ( 0 )



สถานะออฟไลน์


อืมมม... จริงๆแล้ว mysql ก็มีฟังก์ชั่น datediff ให้มาแล้วนะครับ
และสามารถหาช่วงห่างวันได้ถึงแม้ว่าdatatypeของตัวแปรวันเริ่มต้นกับ
วันสิ้นสุดจะต่างชนิดกันเช่น varchar กับ date ขอให้เพียงแต่ว่าค่าที่เก็บ
ใน varchar ต้องอยู่ในรูปแบบคศ. YYYYMMDD จะมีอักขระอื่นมาคั่นก็ได้เช่น
YYYY/MM/DD หรือ YYYY-MM-DD เป็นต้น

จากตัวอย่างนะครับ
CREATE TABLE IF NOT EXISTS `testcastdate` (
`strdate` varchar(10) NOT NULL,
`realdate` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `testcastdate` (`strdate`, `realdate`) VALUES
('2010-06-05', '2007-12-31');

ลอง run คำสั่งนี้ ก็จะได้ช่วงวันห่างกัน 887 วัน
select datediff(strdate, realdate) from testcastdate

แต่ด้วยฐานข้อมูลคุณ วันเริ่มเก็บเป็น พศ. และวันสิ้นสุดเป็น คศ.
หากจะ select แล้วให้ได้ค่าความห่างเลยก็ทำได้ครับ แต่ก็ต้อง
select substring เพื่อให้ได้ พศ.ออกมา แล้วเอามา cast เป็น int
จากนั้นนำ พศ. มาลบด้วย 543 แล้วเอากลับไป concat เป็น คศ.ใหม่
แบบนี้ครับ
select datediff(
concat(cast(substr(strdate,1,4) as unsigned)-543,substr(strdate,5,4)),
realdate)
from testcastdate
Date : 2010-06-05 12:28:47 By : pnbps
 

 

No. 9



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์


เข้าใจที่อธิบายครับ แล้วถ้าเราสามารถตรวจสอบช่วงเวลาที่ห่างกันได้แล้วว่าเป็นกี่วัน ขั้นต่อไปคือผมต้องการกำหนดให้ sql แยกรายการว่าแต่ละช่วงเวลามีกี่ record โดยใช้ ฟังก์ชั่น mysql_num_rows จะต้องเขียนโค้ดในส่วนของการ select ประมาณไหนครับช่วยหน่อยครับ
Date : 2010-06-08 11:06:21 By : ratasart
 

 

No. 10



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์


เข้าใจที่อธิบายครับ แล้วถ้าเราสามารถตรวจสอบช่วงเวลาที่ห่างกันได้แล้วว่าเป็นกี่วัน ขั้นต่อไปคือผมต้องการกำหนดให้ sql แยกรายการว่าแต่ละช่วงเวลามีกี่ record โดยใช้ ฟังก์ชั่น mysql_num_rows จะต้องเขียนโค้ดในส่วนของการ select ประมาณไหนครับช่วยหน่อยครับ
Date : 2010-06-08 13:18:48 By : ratasart
 

 

No. 11



โพสกระทู้ ( 94 )
บทความ ( 0 )



สถานะออฟไลน์


เข้าใจที่อธิบายครับ แล้วถ้าเราสามารถตรวจสอบช่วงเวลาที่ห่างกันได้แล้วว่าเป็นกี่วัน ขั้นต่อไปคือผมต้องการกำหนดให้ sql แยกรายการว่าแต่ละช่วงเวลามีกี่ record โดยใช้ ฟังก์ชั่น mysql_num_rows จะต้องเขียนโค้ดในส่วนของการ select ประมาณไหนครับช่วยหน่อยครับ
Date : 2010-06-10 10:58:05 By : ratasart
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เรียกดูช่วงวันที่ห่างกันด้วย SQL คือผมทำฐานข้อมูลการตรวจวินิจฉัยโรคในห้องแลปโดยใช้ PHP กับ Database MySQL
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่