在php和mysql中获取特定月份和年份的记录
我有一个表,记录存储在2014年9月23日这种格式的日期中。 我搜索了很多,但我在那里得到的所有结果都是时间戳格式的(2013-12-27) 有谁能帮助我,如何从特定月份检索数据(比如2014年9月) 非常感谢你的帮助在php和mysql中获取特定月份和年份的记录,php,mysql,Php,Mysql,我有一个表,记录存储在2014年9月23日这种格式的日期中。 我搜索了很多,但我在那里得到的所有结果都是时间戳格式的(2013-12-27) 有谁能帮助我,如何从特定月份检索数据(比如2014年9月) 非常感谢你的帮助 Table: events id course description date start end 1 john test 9/23/2014 1:00
Table: events
id course description date start end
1 john test 9/23/2014 1:00pm 3:00pm
2 brad play 12/30/2014 5:00pm 8:00pm
My Code:
SELECT date FROM events WHERE MONTHNAME(date) = 'September' AND YEAR(date) = '2014'
简单尝试一下:
$query = mysqli_query($connect,'SELECT columns FROM tablename WHERE MONTHNAME(datecolumnn) = 'September' AND YEAR(datecolumn) = '2014');
)() 您应该在-
SELECT *
FROM `events`
WHERE `date` BETWEEN '2013-09-01' AND '2013-09-30';
因为您的日期存储为varchar
(您真的应该解决这个问题),所以您必须将字符串转换为日期格式,然后进行搜索。不过表演会很糟糕-
WHERE STR_TO_DATE(`date`, '%m/%/d/%Y %h:%i:%s %p') BETWEEN STR_TO_DATE('2013-09-01', '%m/%/d/%Y') AND STR_TO_DATE('2013-09-30', '%m/%/d/%Y')
或
您也可以使用此方法(尽管我更喜欢第一种方法,因为它提供了控件)——
编辑:更新以反映OP的表架构。在命名列之前,您应该始终检查信息。您可以尝试以下方法:
SELECT * FROM my_table WHERE date_field BETWEEN DATE_FORMAT('%m/%d/%Y','2013-09-01') AND DATE_FORMAT('%m/%d/%Y','2013-09-30')
它应该可以工作。值得注意的是,第一个查询可以利用
date\u列上的索引,而第二个查询不能。我已经用mysql架构和我的查询更新了这个问题。请帮助我,您的date列上有什么列类型?格式似乎不正确。请看,基本上我使用了jquery日期选择器,日期列类型为varchar,这就是为什么日期以2014年9月23日的格式保存感谢@Jay Blanchard sqlfiddle.com真的对我有用。万分感谢!!!你节省了我的时间。
SELECT * FROM `table` WHERE YEAR(`date_column`) = 2013 AND MONTH(`date_column`) = 9;
SELECT * FROM my_table WHERE date_field BETWEEN DATE_FORMAT('%m/%d/%Y','2013-09-01') AND DATE_FORMAT('%m/%d/%Y','2013-09-30')