作者JYHuang (夏天到了,冷不起來了說)
看板PHP
標題[討論] timestamp的平均時間統計
時間Tue May 22 16:16:25 2012
目前資料庫裡有某欄位是記錄睡眠時間、存的是一群人在一段時間裡的睡眠時間
而儲存格式則是以timestamp的方式儲存的~
想把樣本的睡眠時間做平均的統計,(平均為 PM 10:30入睡)這樣
如果在資料庫裡把timestamp平均起來再轉成時間
除了時區造成的誤差外、還會有跨日造成的誤差的樣子
後來我用avg((timestamp+28800)%86400)先轉成每日時間再做平均計算
不過後來發現也是會因為跨日的關係出現偏移..
用資料庫計算似乎要考慮到滿多的狀況,
如果直接取原始資料,再由PHP做時間轉換的計算。
會不會比較精準呢?
user date sleeptime(timestamp)
a 2012/2/17 1329491940
a 2012/2/19 1329583260
a 2012/2/20 1329675480
a 2012/2/21 1329756840
像是先算出每天下午6:00的timestamp
再算出偏移量,取平均
再由6:00推算出時間~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.202.164
推 dio833:你的敘述怪怪的,sleeptime存的是int吧?如果是的話 05/22 16:39
→ dio833:avg((sleeptime-unix_timestamp(date)+28800)%86400) 05/22 16:39
→ dio833:以當天為基準就好了,全部還原到1970年吧 05/22 16:40
→ JYHuang:問題是...informix沒有日期轉timestamp的函式啊 Orz 05/22 17:08
→ dio833:那就自己寫在sql中吧,只是四則運算>< 05/22 17:12
→ dio833:你可以先算出date與1970/1/1相差的日數,乘上秒數... 05/22 17:14
→ JYHuang:算年份還要考慮到潤年啊... 05/23 09:21
推 dio833:informix沒有日期計算函式嗎? 05/23 10:04
→ JYHuang:能找到的資料不多...目前我是全勞出來給PHP算 @.@ 05/23 15:25
→ gpmm:感覺很多規則上的問題… o_o 05/24 00:44
→ JYHuang:偏偏informix的脾氣又很難搞 Q.Q 05/24 09:26