im试图在MySQL中选择具有特定年份的所有行。DateTime的格式(例如2016-12-02 10:00:00
),因此我正在尝试使用通配符进行操作。但是我尝试了
SELECT * FROM all-data.prices where YEAR(timestamp)= "2005";
和SELECT * FROM all-data.prices where timestamp= "2005%" ;
而且它对我不起作用。
任何建议是此类选择语句的正确语法?
在WHERE子句中使用字段上使用函数并不是最好的主意。然后,MySQL必须从每一行进行比较之前从每一行计算年度(时间戳)。因此,这是一个完整的桌子扫描,不能使用索引。
更好的是将时间戳与范围进行比较
SELECT * from your_table WHERE `timestamp` >= '2015-01-01 00:00:00' AND `timestamp` < '2016-01-01 00:00:00';
然后mysql可以使用索引(如果有一个)
要使用%您也必须使用类似关键字
SELECT '2015-01-01 23:50:00' LIKE '2015%';
在您的样本中
SELECT * from your_table WHERE `timestamp` LIKE '2015%';