 |
|
|
 |
 |
|
datediff(fieldวันที่ออกรายงาน,fieldวันที่ตรวจ)
|
 |
 |
 |
 |
Date :
2010-05-27 12:39:00 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แปลงเป็น mktime() แล้วนำมาลบกัน
จากนั้นใช้ date() แปลงกลับมาเป็นวันครับ
อีกอันไม่แน่ใจ เหมือนจะใช้ฟังชั่น ของ MySQL มาลบกันได้เลย
|
 |
 |
 |
 |
Date :
2010-05-27 14:29:52 |
By :
iieszz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุนครับ...แต่มีปัญหาใหม่คือฟิลล์แรกผมใช้การลงแบบเลือกจากปฏิทินบันทึกแบบนี้ครับ 01/01/2553 แล้วก็ประเภทของฟิลล์เป็น varchar ครับ แต่ฟิลล์ที่สองเป็น date ครับ ก็เลยไม่รู้ว่าจะเอามาหาผลต่างของวันได้ไหม ใครทราบช่วยด้วยครับ
|
 |
 |
 |
 |
Date :
2010-06-01 10:39:47 |
By :
ratasart |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แปลงจากพศ. เป็น คศ.
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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จะลองดูงับ
|
 |
 |
 |
 |
Date :
2010-06-01 15:40:38 |
By :
ratasart |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แระขอบคุณงับ
|
 |
 |
 |
 |
Date :
2010-06-04 11:17:27 |
By :
ratasart |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รบกวนอีกเรื่องนะคับคือผมใช้โค้ดที่คุน บุญพรหมสุข ให้มาก็ได้ผลครับ แต่ถ้าผมจะเอาข้อมูลช่วงระยะห่างของวันมาทำเป็นกราฟจะมีวิธีดึงยังงัยครับเพราะระยะห่างของวันที่ใช้โค้ดคำนวณมันไม่ได้เป็นค่าที่เก็บในฟิลล์ จะเรียกจากคำสั่ง 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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อืมมม... จริงๆแล้ว 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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เข้าใจที่อธิบายครับ แล้วถ้าเราสามารถตรวจสอบช่วงเวลาที่ห่างกันได้แล้วว่าเป็นกี่วัน ขั้นต่อไปคือผมต้องการกำหนดให้ sql แยกรายการว่าแต่ละช่วงเวลามีกี่ record โดยใช้ ฟังก์ชั่น mysql_num_rows จะต้องเขียนโค้ดในส่วนของการ select ประมาณไหนครับช่วยหน่อยครับ
|
 |
 |
 |
 |
Date :
2010-06-08 11:06:21 |
By :
ratasart |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เข้าใจที่อธิบายครับ แล้วถ้าเราสามารถตรวจสอบช่วงเวลาที่ห่างกันได้แล้วว่าเป็นกี่วัน ขั้นต่อไปคือผมต้องการกำหนดให้ sql แยกรายการว่าแต่ละช่วงเวลามีกี่ record โดยใช้ ฟังก์ชั่น mysql_num_rows จะต้องเขียนโค้ดในส่วนของการ select ประมาณไหนครับช่วยหน่อยครับ
|
 |
 |
 |
 |
Date :
2010-06-08 13:18:48 |
By :
ratasart |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เข้าใจที่อธิบายครับ แล้วถ้าเราสามารถตรวจสอบช่วงเวลาที่ห่างกันได้แล้วว่าเป็นกี่วัน ขั้นต่อไปคือผมต้องการกำหนดให้ sql แยกรายการว่าแต่ละช่วงเวลามีกี่ record โดยใช้ ฟังก์ชั่น mysql_num_rows จะต้องเขียนโค้ดในส่วนของการ select ประมาณไหนครับช่วยหน่อยครับ
|
 |
 |
 |
 |
Date :
2010-06-10 10:58:05 |
By :
ratasart |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|