尝试各种各样的事情,但此刻空手而归。我让它像这样运行硬编码:
WHERE (activities.created_at BETWEEN '2015-08-07 00:00:00'
AND '2015-08-07 23:59:59.999')
我只是想让它自动化一点,所以我不必每天都去那里并将日期更改为7天前的日期。
我最近的测试是:
WHERE (`activities`.`created_at` = CURDATE() - INTERVAL 7 DAY)
它不会抛出错误,而是在应该显示338行时显示空集。
答案 0 :(得分:3)
我这样做:
protected void BindData(DataTable dt)
{
GridView1.DataSource = dt;
GridView1.DataBind();
}
如果您愿意,请使用 WHERE `activities`.`created_at` >= DATE(NOW()) - INTERVAL 7 DAY
AND `activities`.`created_at` < DATE(NOW()) - INTERVAL 6 DAY
代替CURDATE()
。
我的偏好是做一个&#34;少于&#34;第二天午夜。
小于或等于时间分量为&#34; 23:59:59&#34;只要分辨率降到第二个就可以正常工作,这就是MySQL DATETIME或TIMESTAMP。某些数据库支持更精确的日期时间值,在SQL Server中最低可达3毫秒,例如&#34; 23:59:59.982&#34;
&#34>不到第二天的午夜&#34;模式适用于比1秒更精确的日期时间值。
答案 1 :(得分:3)
这应该有效
SharedPreferences
您的问题是等号两侧的数据类型不相同。 where date(created_at) = CURDATE() - interval 7 day
是日期时间列,而created_at
则返回日期。上述语句会将curdate()
转换为比较前的日期。