这个mysql脚本到底意味着什么时间BETWEEN?
ADDDATE(CURDATE(), -(DAY(CURDATE())-1)) AND CONCAT(LAST_DAY(CURDATE()),' 23:59:59')
答案 0 :(得分:0)
DAY(CURDATE())-1
是当月的当天,少于1.对于今天(2013年8月15日),价值为14.从8月15日减去14天,你有8月1日。换句话说, ADDDATE(CURDATE(), -(DAY(CURDATE())-1))
为您提供了该月的第一天。
LAST_DAY(CURDATE())
为您提供该月的最后一天。如果您今天致电它,它将于2013年8月31日返回。附加23:59:59
,您将拥有该月最后一天的最后一秒。
换句话说,如果在2013年8月15日调用,则值为2013-08-01
和2013-08-31 23:59:59
。如果此范围适用于DATETIME
值,则表示“2013年8月的任何内容”。
这实际上是在一个月内检查日期/时间值的一种非常好的方法,因为它避免在保存日期/时间的MySQL列上使用函数。如果列具有索引,则索引(可能)将用于优化。我经常看到的一种方法是:
WHERE DATE_FORMAT(myDateTime, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')
这看起来好一点,但它会杀死优化。我会坚持你已有的表达方式。