MYSQL日期时间行是从7天前开始的?

时间:2015-08-14 17:50:04

标签: mysql

尝试各种各样的事情,但此刻空手而归。我让它像这样运行硬编码:

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行时显示空集。

2 个答案:

答案 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()转换为比较前的日期。