SQL查询where()日期年份为$ year

sim*_*Pod 12 php sql

我将日期存储在我的数据库中的date数据类型列中.

假设我有列date存储数据,如"2011-01-01","2012-01-01","2012-02-02"等.

现在我需要创建只选择date等于的行的SQL2012

SELECT * FROM table WHERE date=hasSomehowYearEqualTo=2012

查询会是什么样的?

Eug*_*eck 18

千万不要使用YEAR(date)-这将计算YEAR(date)所有日期,即使对于那些,你永远不会使用.它还将使用不可能的索引 - 在DB层上最坏的情况.

使用

$sql="SELECT * FROM table WHERE `date` BETWEEN '$year-01-01' AND '$year-12-31'"
Run Code Online (Sandbox Code Playgroud)

作为一般规则:如果您可以选择常量计算和字段计算,请使用前者.

  • @ceejayoz这就差了!它为所有日期创建字符串表示,不使用索引...如果您可以在常量计算和字段计算之间进行选择,请使用前者.LIKE是对场地的计算! (3认同)

Gab*_*oli 9

查看MySQL 的YEAR() docs函数

SELECT * FROM table WHERE YEAR(date)=2012
Run Code Online (Sandbox Code Playgroud)