Php 基于日期的Mysql查询?
我有一张这样的桌子Php 基于日期的Mysql查询?,php,mysql,Php,Mysql,我有一张这样的桌子 id | date | content 1 | 09-16-2013 | content 1 here 2 | 09-23-2013 | content 2 here 3 | 09-30-2013 | content 3 here 我想从那个日期开始显示一周的内容。例如,第一个内容应该从2013年9月16日开始,然后显示到2013年9月22日午夜。然后在第二天,它变为内容2。 同样,当我在内容2上时,我想显示“前一周内容”,然后只显示前一周的内容..我想我可以通过检
id | date | content
1 | 09-16-2013 | content 1 here
2 | 09-23-2013 | content 2 here
3 | 09-30-2013 | content 3 here
我想从那个日期开始显示一周的内容。例如,第一个内容应该从2013年9月16日开始,然后显示到2013年9月22日午夜。然后在第二天,它变为内容2。
同样,当我在内容2上时,我想显示“前一周内容”,然后只显示前一周的内容..我想我可以通过检查当前日期,然后检查下面必须显示的任何内容来做到这一点
我不太擅长这种mysql查询,请指教
问候试试这个
SELECT * FROM table WHERE date BETWEEN '09-16-2013' AND '09-22-2013';
关键词是
要动态选择它,请尝试以下操作
SELECT * FROM `yourTable` WHERE NOW() >= STR_TO_DATE(`date`, '%m-%d-%Y') ORDER BY STR_TO_DATE(`date`, '%m-%d-%Y') DESC LIMIT 1
或t
SQLFIDLE示例-您可以根据需要替换周偏移量
SET @weekOffset = +2;
SELECT * FROM test
WHERE WEEK(`date`) = WEEK(NOW()) + @weekOffset;
看一个正在运行的演示我想你正在寻找这样的东西
选择*
来自表1
其中日期介于CURDATE()和间隔0之间-工作日(CURDATE())天
和CURDATE()+间隔6-工作日(CURDATE())天
此查询将获取date
列位于当前日历周(从周一到周日)边界内的行
函数返回日期的工作日索引(0=周一,1=周二,…6=周日)。表情
CURDATE() + INTERVAL 0 - WEEKDAY(CURDATE()) DAY
返回当前日历周的星期一的日期,以及
CURDATE() + INTERVAL 6 - WEEKDAY(CURDATE()) DAY
返回当前日历周的星期日的日期。
在WHERE
子句中使用BETWEEN
,确保查询只返回值介于这两个日期(周一到周日)之间的date
行
注意:确保在date
列上有索引。此查询是索引友好的
今日(2013年9月19日)的样本输出:
从哪个日期算起一周,当前日期?在MySQL中使用
week()
函数。是的,如果表中有今天的日期,则从该日期算起一周。我无法在查询中获得该日期。这类似于一周的引号,所以MySQL表中的所有记录都是每周的…例如,每周一我都会有一个新的报价,所以从那个日期到1周都需要显示相同的内容。我想这就是我需要的!我会检查一下,然后回来投票!你能补充一下这个查询的工作原理吗?谢谢@peterm!我将检查它与几个记录和测试它。再次感谢@杰伊:非常欢迎:)请参阅更新的答案以获得一些解释。谢谢!这很有帮助。最后一个问题。对于我的问题,我想在哪里显示前一周的内容,我应该只操纵中间条件吗?例如,下周一,我应该展示本周的内容。同样,从现在起3周后,我应该在“上一周”部分下显示过去两周以及当前一周的内容。此外,如果从这些查询中删除LIMIT 1
,它将在同一查询中返回所有以前的“内容”。您还可以将其更改为限制2
,以仅获取当前和前一周的数据-
SET @weekOffset = +2;
SELECT * FROM test
WHERE WEEK(`date`) = WEEK(NOW()) + @weekOffset;
CURDATE() + INTERVAL 0 - WEEKDAY(CURDATE()) DAY
CURDATE() + INTERVAL 6 - WEEKDAY(CURDATE()) DAY
+------+------------+----------------+
| id | date | content |
+------+------------+----------------+
| 1 | 2013-09-16 | content 1 here |
+------+------------+----------------+