 |
สอบถามครับคือผมต้องการจะเปรียบเทียบเวลาในแต่ระแถวครับว่าใช้เวลาห่างกันเท่าไหร่ |
|
 |
|
|
 |
 |
|
แนวทางครับ
Code (PHP)
<?php
function DateDiff($strDate1,$strDate2)
{
return (strtotime($strDate2) - strtotime($strDate1))/ ( 60 * 60 * 24 ); // 1 day = 60*60*24
}
function TimeDiff($strTime1,$strTime2)
{
return (strtotime($strTime2) - strtotime($strTime1))/ ( 60 * 60 ); // 1 Hour = 60*60
}
function DateTimeDiff($strDateTime1,$strDateTime2)
{
return (strtotime($strDateTime2) - strtotime($strDateTime1))/ ( 60 * 60 ); // 1 Hour = 60*60
}
echo "Date Diff = ".DateDiff("2008-08-01","2008-08-31")."<br>";
echo "Time Diff = ".TimeDiff("00:00","19:00")."<br>";
echo "Date Time Diff = ".DateTimeDiff("2008-08-01 00:00","2008-08-01 19:00")."<br>";
?>
Go to : PHP DateDiff / TimeDiff
|
 |
 |
 |
 |
Date :
2019-06-11 10:06:31 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าจะเทียบเวลาแต่ละแถว
ก็เอาข้อมูลชุดนี้มา join กันครับ
join โดยใช้ id
โดยเอา id ที่มีไปเทียบกับ id อีกฝั่งที่มีค่าน้อยกว่า 1
เช่น
Table A..........................................Table B
id..........name........time..................id.B........name.B......time.b
1............xxxxx........xxxxx.................null.........null............null
2............yyyy.........yyyy..................1............xxxxx..........xxxxx
เราก็จะได้แถวที่มีเวลาที่ต้องการ และ เวลาก่อนหน้าในแถวเดียวกันแล้วครับ
แล้วก็ใช้พวก คำสั่งหาเวลาที่ต่างกันได้ครับ
|
 |
 |
 |
 |
Date :
2019-06-11 15:29:41 |
By :
fonfire |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คงใช้ join id ไม่ได้มั้งครับ เจ้าหน้าที่ไม่ได้มีคนเดียว
ใช้ sub query ช่วย
หาค่า min ของ เวลาที่มากกว่าปัจจุบัน
หรือ
หาค่า max ของเวลาที่น้อยกว่าปัจจุบัน
Code (SQL)
select *, (unix_timestamp(t.date) - sec) as sec_dif
from (
select t.* , (select max(unix_timestamp(date)) from tablename where save=t.save and date<t.date) as sec
from tablename as t
) as x
where sec is not null
ถ้าจะทำงานเร็ว ให้สร้าง index save+date ไว้ด้วย ไม่ต้องใช้ min max แต่ใช้ order by + limit 1 แทน
|
ประวัติการแก้ไข 2019-06-11 16:03:06 2019-06-11 16:04:39
 |
 |
 |
 |
Date :
2019-06-11 16:00:30 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ครับทำไมมันบอกไม่รู้จักฟังก์ชัน
Msg 195, Level 15, State 10, Line 3
'unix_timestamp' is not a recognized built-in function name.
Msg 195, Level 15, State 10, Line 5
'unix_timestamp' is not a recognized built-in function name.
|
 |
 |
 |
 |
Date :
2019-06-11 16:37:02 |
By :
HLEW |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
database เป็นอะไรครับ
sqlserver
DATEDIFF(SECOND,{d '1970-01-01'}, field_datetime)
mysql
UNIX_TIMESTAMP(field_datetime)
https://mariadb.com/kb/en/library/unix_timestamp/

|
ประวัติการแก้ไข 2019-06-11 16:52:51 2019-06-11 16:57:07
 |
 |
 |
 |
Date :
2019-06-11 16:48:20 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|