从今天开始选择记录,本周,本月php mysql

And*_*sen 65 php mysql select date

我想这很简单,但无法弄清楚.我正在尝试制作几个页面 - 其中一个页面将包含今天,本周和本月从我的mysql数据库表中选择的结果.使用创建记录时输入日期date('Y-m-d H:i:s');.这是我到目前为止所拥有的:

日期>(日期 - (60*60*24))

 "SELECT * FROM jokes WHERE date>(date-(60*60*24)) ORDER BY score DESC"
Run Code Online (Sandbox Code Playgroud)

日期>(日期 - (60*60*24*7))

 "SELECT * FROM jokes WHERE date>(date-(60*60*24*7)) ORDER BY score DESC"
Run Code Online (Sandbox Code Playgroud)

月(30天),日期>(日期 - (60*60*24*30))

 "SELECT * FROM jokes WHERE date>(date-(60*60*24*30)) ORDER BY score DESC"
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激.谢谢!

Nat*_*ard 121

假设您的日期列是实际的MySQL日期列:

SELECT * FROM jokes WHERE date > DATE_SUB(NOW(), INTERVAL 1 DAY) ORDER BY score DESC;        
SELECT * FROM jokes WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK) ORDER BY score DESC;
SELECT * FROM jokes WHERE date > DATE_SUB(NOW(), INTERVAL 1 MONTH) ORDER BY score DESC;
Run Code Online (Sandbox Code Playgroud)

  • 这只会减1周吗?那个星期呢? (3认同)

小智 73

尝试使用日期和时间函数(MONTH(),YEAR(),DAY(),MySQL手册)

本星期:

SELECT * FROM jokes WHERE WEEKOFYEAR(date)=WEEKOFYEAR(NOW());
Run Code Online (Sandbox Code Playgroud)

上个星期:

SELECT * FROM jokes WHERE WEEKOFYEAR(date)=WEEKOFYEAR(NOW())-1;
Run Code Online (Sandbox Code Playgroud)

  • 最好的答案,请将其更新为SELECT*FROM jokes WHERE WEEKOFYEAR(date)= WEEKOFYEAR(NOW())AND YEAR(date)= YEAR(now()); 排除旧年的数据. (3认同)

小智 39

这个月:

SELECT * FROM jokes WHERE YEAR(date) = YEAR(NOW()) AND MONTH(date)=MONTH(NOW());
Run Code Online (Sandbox Code Playgroud)

本周:

SELECT * FROM jokes WHERE WEEKOFYEAR(date) = WEEKOFYEAR(NOW());
Run Code Online (Sandbox Code Playgroud)

当前日期:

SELECT * FROM jokes WHERE YEAR(date) = YEAR(NOW()) AND MONTH(date) = MONTH(NOW()) AND DAY(date) = DAY(NOW());
Run Code Online (Sandbox Code Playgroud)

这将只选择当前月份,真正的一周,真的只有今天:-)

  • 非常感谢.在创建一些自定义排行榜时,此解决方案非常适合我. (2认同)

Dav*_*est 9

内森的答案会在过去的24小时,168小时和744小时内给你开玩笑,而不是本周本月的笑话.如果这就是你想要的,那很好,但我想你可能正在寻找不同的东西.

使用他的代码,中午,你将从昨天中午开始,到今天中午结束.如果你真的想要今天的笑话,请尝试以下方法:

SELECT * FROM jokes WHERE date >= CURRENT_DATE() ORDER BY score DESC;  
Run Code Online (Sandbox Code Playgroud)

你必须做一些与当前周,月等有所不同的事情,但你明白了.