2016-12-03 62 views
0

即時嘗試選擇在mysql中具有特定年份的所有行。 datetime的格式如2016-12-02 10:00:00,所以我試圖使用通配符來做到這一點。但是我想mysql在涉及時間戳的請求中使用通配符

SELECT * FROM all-data.prices where YEAR(timestamp)= "2005"; 

SELECT * FROM all-data.prices where timestamp= "2005%" ; 和它沒有爲我工作。

任何關於這種select語句的正確語法的建議?

+0

你有一個真正的'timestamp'專欄,或者它是'varchar'嗎? – Mureinik

+0

@Mureinik - 沒有它的一個真正的時間戳列 –

+0

嗯......使用'年'應該有效。你能分享一些樣本數據和你得到的結果嗎? – Mureinik

回答

1

在WHERE子句的字段中使用FUNCTION不是最好的辦法。然後,MySQL必須先計算每個ROW的YEAR(時間戳),然後才能進行比較。所以它是一個完整的表掃描,不能使用INDEX。

更好的是是時間戳與一系列比較

SELECT * from your_table WHERE `timestamp` >= '2015-01-01 00:00:00' AND `timestamp` < '2016-01-01 00:00:00'; 

那麼MySQL可以使用一個索引(如果有的話)

使用%,你還必須使用LIKE關鍵字

SELECT '2015-01-01 23:50:00' LIKE '2015%'; 
你的樣品中

SELECT * from your_table WHERE `timestamp` LIKE '2015%';