问题背景介绍
因为Prof想知道每个building里的average-dwell时间,NUS-WiFi数据库提供了current-time,
first-time。思路就是根据两者时间的差值来估计stay in building的时间。
人生苦短,首选python
第一想法当然是用python,用python包:time
, datetime
.
代码如下:
1 | import time |
结果如下图:
MySQL
表示不服
上学期我用python做的统计工作,例如每分钟有多少device,或者每个device在building里停留了多少分钟.
用python至少得写30+行代码去读写csv文件,在MySQL就是一行代码的事情,相见恨晚。无知限制了我的生产力!
MySQL的数据类型里有时间戳格式timestamp。也有专门计算时间差值的timestampdiff
函数。
TIMESTAMPDIFF(unit,begin,end);返回end-begin的时间差值。
1 | select timestampdiff(minute,firstime,curtime) |
结果如下图:
INSERT遇到问题了
我想把timestampdiff返回的值插入在表的最后,先创建一个字段(列),再用insert插入,结果遇到了问题。
1 | insert into test (diff) select timestampdiff(minute,firstime,curtime) from test; |
如图所示,结果是插在了diff列,但直接插在表的后面,没有覆盖原有的值。经过思考后,我尝试了 update的方法。
1 | update test set diff=timestampdiff(minute,firstime,curtime); |
终于成功了!
咸鱼的叹息
python定义了一个函数来计算,用MySQL就是一句话的事情。光找这句话我就花了好久,还得好好学习。
还是在项目中体会得多,光看书是不行的,纸上得来终觉浅。
很惭愧,连一点微小的工作都没有做,打扰了。