DATEDIFF(now(), a.state_date);
表示的是当前时间减去你筛选出来的时间,以日为最后的时间,通常用来选择今天或者是附近几天的数据。今天的话就是 0, 明天的话就是-1
DATE_FORMAT(a.start_date, '%u' ) = DATE_FORMAT(now(), '%u' );
这表示将日期进行转码, %u 表示第几个星期, 这表示和当前日期相同星期的数据被选出来.
WEEKDAY( now());
表示当前是星期几,0表示周一,6表示周日
DAYNAME(now());
返回的是一个英文名称sunday 什么的
之前是用字符串进行时间筛选的,效率会稍微慢一点,但是改成时间戳的话就会快一些
UNIX_TIMESTAMP(end_date) >= UNIX_TIMESTAMP(now()) AND UNIX_TIMESTAMP(start_date) <= UNIX_TIMESTAMP(now())
当然如果建立了索引后数度会快很多
有时候要对小时进行操作,以下代码就是对筛选出某一个小时内的数据,比如现在是 19点 就会查询出所有 19点到20点之间的数据。
$sql = "SELECT * FROM " . TABLE_ACTIVITIES_RECORD . " WHERE TIMESTAMPDIFF(HOUR, DATE_FORMAT(DATE,'%Y-%m-%d %H:00'), CURRENT_TIMESTAMP()) < 1 AND activity_name = :activity_name";