sql 关于时间操作

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";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值