我的日期时间会像这样进入数据库:
$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'"
我没有收到错误,但没有回复。关于如何纠正这个问题的任何想法?
答案 0 :(得分: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
答案 1 :(得分: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时,月()调用也可以用作,
SELECT * FROM admin_panel WHERE month(datetime)='02'