如何使用mySQLi中的MONTH()按月获取博客帖子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用mySQLi中的MONTH()按月获取博客帖子相关的知识,希望对你有一定的参考价值。

我有我的日期时间进入DB这样:

$CurrentTime = time();
$DateTime = strftime("%b-%d-%Y %H: %M: %S", $CurrentTime);

phpMyAdmin中它看起来像这样:

May-15-2018 01: 04: 00
Feb-08-2018 13: 49: 23
etc...

该领域是varchar(50)

我正在尝试根据帖子创建的月份从此表中提取帖子。

我尝试过以下方法:

"SELECT * FROM admin_panel WHERE MONTH(datetime) ='2'"
"SELECT * FROM admin_panel WHERE MONTH(STR_TO_DATE(datetime, '%b-%d-%Y %H: %M: %S')) ='2'"

我没有收到错误,但没有回复。关于如何纠正这个问题的任何想法?

答案

您可以将mysql STR_TO_DATE与MONTH一起使用

"SELECT * FROM admin_panel WHERE MONTH(STR_TO_DATE(`datetime`,'%b-%e-%Y %H:%i:%s')) = 5"

使用AND条件添加年份

SELECT * FROM admin_panel WHERE MONTH(STR_TO_DATE(`datetime`,'%b-%e-%Y %H:%i:%s')) = 5 AND YEAR(STR_TO_DATE(`datetime`,'%b-%e-%Y %H:%i:%s')) = 2018
另一答案

当'datetime'列定义为DATETIME,yyyy-mm-dd h:i:s(2018-06-14 14:29:15)而不是VARCHAR时,以下情况有效

SELECT * FROM admin_panel where extract(month from datetime)='02'

我认为,如果您使用VARCHAR而不是DATE ..类型,那么您必须将字符串类型转换为在查询中对其执行任何基于日期的函数的日期。 Imo,最好将日期存储在DATE ..格式中,让MySQL以某种格式存储它;但您可以使用DATE_FORMAT函数进行格式化以进行显示。

当列类型为DATETIME时,month()调用也可以用作,

SELECT * FROM admin_panel WHERE month(datetime)='02'

以上是关于如何使用mySQLi中的MONTH()按月获取博客帖子的主要内容,如果未能解决你的问题,请参考以下文章

linq 里按月查询汇总

如何在 presto SQL 中按月分组

sql中如何把具体日期转化为按月排序?

MagicalRecord - 获取按月/年分组的对象

如何将按月分区的配置单元表中的数据加载到按周分区的配置单元表中

sql 按计数获取日期的博客存档格式,并按月/年分组