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

问题描述 投票:0回答:2

我有我的日期时间进入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'"

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

php datetime mysqli
2个回答
0
投票

您可以将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

0
投票

当'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'
© www.soinside.com 2019 - 2024. All rights reserved.