การหาคำนวณหาวันที่พร้อมเวลา โค้ดด้านบนนี้สามารถคำนวณหาวันที่ได้แล้ว แต่ติดตรงที่ว่าต้องคำนวณหาวันให้ได้ครึ่งวัน จะทำอย่างไรดี
<?php $num_start_date=$row_rs_event_dayoff['start_date'];
$num_stop_date=$row_rs_event_dayoff['stop_date'];
list($start_year,$start_month,$start_day)=explode("-",$num_start_date);
list($stop_year,$stop_month,$stop_day)=explode("-",$num_stop_date);
$f_start=mktime(0,0,0,$start_month,$start_day,$start_year);
$f_stop=mktime(0,0,0,$stop_month,$stop_day,$stop_year);
$num_date=($f_stop-$f_start);
?>
//โค้ดที่นำมาแสดง
<?php echo (date("d",$num_date));?>
โค้ดด้านบนนี้สามารถคำนวณหาวันที่ได้แล้ว
แต่ติดตรงที่ว่าต้องคำนวณหาวันให้ได้ครึ่งวัน จะทำอย่างไรดี
ในดาต้าเบส เก็บเป็น timestamp
มีวิธีไหนบ้าง หรือแนวคิดก็ได้ค่ะ
ขอบคุณค่ะTag : - - - -
Date :
2009-11-09 11:45:07
By :
bigjiw82
View :
1302
Reply :
8
จับลบกันใน ฐานข้อมูลเลยครับ หรือว่าใข้ datediff ของ mysql ก็ได้
Date :
2009-11-09 12:23:51
By :
plakrim
SELECT datediff( stop_date, start_date ) dif_date
FROM event_dayoff
start_date = 2009-11-03 08:00:00
stop_date= 2009-11-03 16:30:00
ผลลัพธ์ที่ได้จากฐานข้อมูล 0
ผลลัพธ์ที่จากคิดคำนวณต้องได้ 1
start_date = 2009-11-02 08:30:00
stop_date= 2009-11-03 12:00:00
ผลลัพธ์ที่ได้จากฐานข้อมูล 1
ผลลัพธ์ที่จากคิดคำนวณต้องได้ 1.5
เราจะสามารถใช้คำสั่ง mysql อย่างไร
ขอบคุณค่ะ
Date :
2009-11-09 12:35:30
By :
bigjiw82
อุ้ย ต้องหาแบบครึ่งวันหรอ งงอะซิงานนี้
SELECT HOUR(TIMEDIFF('2009-11-03 16:30:00','2009-11-03 08:00:00')) as result;
SELECT HOUR(TIMEDIFF('2009-11-03 12:00:00','2009-11-02 08:30:00')) as result;
ลองดูละกัน ผลลัพธ์ออกมาเป็น ชั่วโมง เอาไปหาร 24 แล้วปัดเศษเอา ถ้ายังไม่ได้ เดี๋ยวค่อยว่ากันใหม่
Date :
2009-11-09 12:49:45
By :
plakrim
SELECT HOUR(TIMEDIFF('2009-11-03 12:00:00','2009-11-02 08:30:00')) as result;
$total_hour=($result/24);
echo $total_hour;
ผลลัพธ์ 1.125
นำฟังก์ชั่นการปัดเศษมาใช้ แล้วปรากฎว่า
ceil()
ผลลัพธ์ได้ 2
floor()
ผลลัพธ์ได้ 1
แต่ผลลัพธ์ที่ได้ต้องเป็น 1.5 วัน
ใน mysql มีฟังก์ชั่นอื่น ๆ หรือเปล่า
ต้องใช้เงื่อนไขเข้ามาช่วยค่ะ
ขอบคุณค่ะ
Date :
2009-11-09 13:34:24
By :
bigjiw82
ลองใช้ round ดูไหม ถ้ายังไม่พอใจ ต้องใช้ mod ละ หาร 24 ได้เป็นวันแล้ว mod 24 ถ้าเกิน 0 ก็เป็นครึ่งวัน
Date :
2009-11-09 13:49:07
By :
plakrim
ทำวันที่และชั่วโมง เพื่อให้แสดงผลลัพธ์ถูกต้องได้แล้ว
SELECT HOUR(TIMEDIFF(event_dayoff.stop_date,event_dayoff.start_date))dif_hour,DATEDIFF(event_dayoff.stop_date,event_dayoff.start_date) dif_day FROM (event_dayoff LEFT JOIN type_dayoff ON type_dayoff.type_dayoff_id=event_dayoff.type_dayoff_id)
WHERE event_dayoff.m_id = 437 ORDER BY s_id DESC
<?php $dif_hour=$row_rs_event_dayoff['dif_hour'];
$dif_day=$row_rs_event_dayoff['dif_day']+1;
if ($dif_hour%8==0){
$total_hour=$dif_day+0;
}else{
$total_hour=$dif_day+0.5;
}
?>
Date :
2009-11-10 14:15:52
By :
bigjiw82
ตอนนี้เหลือการคำนวณโดยไม่ให้นับวันเสาร์-อาทิตย์ วันหยุดนักขัตฤกษ์
จะคำนวณอย่างไร หรือใช้ฟังกชั่นอะไรมาช่วยในการคำนวณ
ขอบคุณค่ะ
Date :
2009-11-11 08:44:26
By :
bigjiw82
โอ้ววว แบบนี้ sql คงช่วยไม่ได้ ต้องหันไปใช้ php แล้วหละครับ
Date :
2009-11-11 10:21:59
By :
plakrim
Load balance : Server 02