看板 PHP 關於我們 聯絡資訊
目前資料庫裡有某欄位是記錄睡眠時間、存的是一群人在一段時間裡的睡眠時間 而儲存格式則是以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