我在date
数据类型的列中将日期存储在我的数据库中。
假设我有列date
,我存储的数据类似于“2011-01-01”,“2012-01-01”,“2012-02-02”等。
现在我需要创建只选择date
等于2012
SELECT * FROM table WHERE date=hasSomehowYearEqualTo=2012
查询会是什么样的?
答案 0 :(得分:18)
不使用YEAR(date)
- 这将为所有日期计算YEAR(date)
,即使是那些您永远不会使用的日期。它还将使用不可能的索引 - 在DB层上最坏的情况。
使用
$sql="SELECT * FROM table WHERE `date` BETWEEN '$year-01-01' AND '$year-12-31'"
作为一般规则:如果您可以选择常量计算和字段计算,请使用前者。
答案 1 :(得分:8)
查看MySQL的YEAR()
docs函数
SELECT * FROM table WHERE YEAR(date)=2012
答案 2 :(得分:-3)
从DATEPART(年,[日期])= 2012
的表中选择*