在php和mysql中获取特定月份和年份的记录

时间:2014-09-29 18:23:01

标签: php mysql

我有一个表格,其中记录以9/23/2014格式存储在日期格式中。 我搜索了很多,但我得到的所有结果都是时间戳格式(2013-12-27)。

任何人都可以帮助我,如何从特定月份检索数据(比如说'2014年9月')

非常感谢帮助。

   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'

3 个答案:

答案 0 :(得分:5)

你应该使用BETWEEN -

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')

WHERE STR_TO_DATE(LEFT(`date`,LOCATE(' ',`date)),'%m/%d/%Y') BETWEEN '2013-09-01' AND '2013-09-30';

你也可以使用这种方法(虽然我更喜欢第一种,因为它提供的控制) -

SELECT * FROM `table` WHERE YEAR(`date_column`) = 2013 AND MONTH(`date_column`) = 9;

编辑:已更新以反映OP的表架构。在命名列之前,您应该始终检查reserved word信息。

答案 1 :(得分:0)

简单试试这个:

$query = mysqli_query($connect,'SELECT columns FROM tablename WHERE MONTHNAME(datecolumnn) = 'September' AND YEAR(datecolumn) = '2014');

答案 2 :(得分:0)

您可以尝试这样的事情:

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')

它应该有用。