mySQL - 日期时间限制

标签 mysql sql datetime limit

我有一个包含匹配项及其日期(在 DateTime 列中)的 mySQL 表。

是否可以获取从第 X 天到第 X+n 天的所有匹配项,然后获取从第 X+n 天到第 X+2n 天的所有匹配项...?

我会用它来“限制”我的结果:如果我在第 1 页,我会得到从第 1 天到第 5 天的所有匹配项(例如),在第 2 页,我会得到从第 6 天到第 1 天的所有匹配项10等

我想我不能使用 LIMIT 子句,因为它只限制我得到的行(基于我想要的行数而不是天数)

最佳答案

您可以使用DATE_ADD 函数来完成

SELECT * 
FROM table 
WHERE date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 30 DAY)

http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_date-add

编辑:

如果你想用它来分页,你可以用下面的方法来做:

$page = 0; //receive it i.e with $_GET, but be aware of sql injection
$intervalInDays = 30;
//create db connection...
$sql = "
SELECT * 
FROM table 
WHERE date 
    BETWEEN DATE_ADD(DATE('your startdate'), INTERVAL (".$page * $interval.") DAY) 
    AND DATE_ADD(DATE('your startdate'), INTERVAL (".($page+1) * $interval.") DAY)";
//query and fetch...

关于mySQL - 日期时间限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24431723/

相关文章:

php - 我应该如何确定 Perl 中时区的下一个夏令时 (DST) 转换?

mysql - 用于查找相似行 id 的行查询

mysql - 从 Coldfusion 10 服务器执行 MySQL 插入语句的问题

sql - Entity Framework : Update entity or add if it doesn't exist

sql - 甲骨文 : SUM Column of only duplicates value of other column

javascript - 使用 jsTimezoneDetect 脚本显示三个字母的时区代码

php - 如何处理像mysql中计算平均分这样的困难过程?

mysql - 可以在数据库中存储两次值吗?

mysql - 组,但显示列的所有行

c# - 获取特定月份的第一个工作日