按时间搜索数据在mysql里应该是用的比较频繁的了。
iOrange系统里的时间都是按:xxxx-xx-xx xx:xx:xx这种格式存放的,大多数时候这个都没问题,但是,当你想使用其他格式来显示数据时就悲剧了,例如你想显示成 10/04/01 21:20 这种就很悲剧-__-,所以强烈建议保存时间戳的时候尽量存储一个UNIX时间戳,这样以后就方便很多了^_^
回归正题,第一个时间函数是:UNIX_TIMESTAMP,这个函数可以将xxxx-xx-xx xx:xx:xx这种格式的时间转换成一个unix时间戳格式的数字。例如下面那条语句:
update bookposts set lastpost = UNIX_TIMESTAMP(createdate) 这样就能将createdate字段上的时间更新到lastpost上去了。
第二个函数则跟第一个刚好相反:FROM_UNIXTIME,这个函数可以将一个UNIX时间戳转换成xxxx-xx-xx xx:xx:xx这种格式。用法大致如下:
SELECT COUNT(*) AS `newmembers` FROM `cdb_members` WHERE FROM_UNIXTIME(regdate, ‘%Y-%m-%d’) = ‘2010-04-01′”