我以dd-mm-yy格式将数据存储在数据库中,例如03-10-2013,
如何按月搜索记录?数字月份(01到12);
我目前正在使用
$query = "SELECT * FROM data WHERE date LIKE %$month%";
但这不能正常工作。
答案 0 :(得分:4)
我假设当你以一种格式说出存储在数据库中的日期时,它们不会使用" date"类型,而是使用varchar或char类型的列。
基于此,几乎没有办法做到这一点。
SELECT * FROM data WHERE Month(STR_TO_DATE(datestrcolumn, '%d/%m/%Y')) = 5;
SELECT * FROM data WHERE Month(realdatecolumn) = 5;
UPDATE data set monthcolumn = Month(realdatetimecolumn)
然后
SELECT * FROM data WHERE monthcolumn = 5;
在monthcolumn上创建索引,如果有大量数据,此查询将比其他查询快得多
答案 1 :(得分:3)
首先在数据库结构中修复日期格式,将其更改为:yyyy-mm-dd
然后将查询语句更改为:
$query = "SELECT * FROM data WHERE MONTH(`date`) = '$month';
这将选择月份为' 5'或者' 11'或者' 12'这将给不同年份的重复。
如果您需要包含年份的月份(以避免重复年份):
$query = "SELECT * FROM data WHERE SUBSTR(DATE(`date`),1,7) = SUBSTR(DATE('$month'),1,7);
这将返回:' 2015-01'或者' 2014-12'
获取日期为' 01'或者' 04'或者' 12':
$query = "SELECT * FROM data WHERE SUBSTR(DATE(`date`),6,2) = SUBSTR(DATE('$month'),6,2);
答案 2 :(得分:0)
试试这个......
您可以使用MySQL MONTH()函数
MySQL MONTH()返回日期的MONTH,范围为1到12(1月到12月)。当日期的MONTH部分为0时,它返回0
4是4月
SELECT * FROM tbl WHERE MONTH( date ) ='4'
答案 3 :(得分:0)
你可以这样做......因为它不是日期格式(YYYY-MM-DD)
$q="SELECT * FROM data WHERE MONTH(DATE_FORMAT(STR_TO_DATE(date, '%d-%m-%Y'), '%Y-%m-%d') ) = '$YOUR_SEARCH_MONTH' ";