Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php和mysql中获取特定月份和年份的记录_Php_Mysql - Fatal编程技术网

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

在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

我有一个表,记录存储在2014年9月23日这种格式的日期中。 我搜索了很多,但我在那里得到的所有结果都是时间戳格式的(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'
简单尝试一下:

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