2011-09-30 263 views
0

im在mysql數據庫中存儲日期,時間戳在(int)類型列中。Sql查詢需要

但我怎樣才能得到這(當前)月僅當前行?

什麼應該是sql查詢來獲取所需的數據?

+0

我很好奇你爲什麼不把日期存儲爲時間戳列? – John

+0

你可以嘗試這樣的事:[stackoverflow.com - 時間戳-AS-INT-現場查詢性能] [1] [1]:http://stackoverflow.com/questions/2738444/ timestamp-as-int-field-query-performance – Mark

+1

@john - 「時間戳記數據類型只是一個遞增數字,並不保留日期或時間。」 - http://msdn.microsoft.com/en-us/library/ms182776(v=sql.90).aspx – Tony

回答

0

加爲好,你可以使用日期函數:

SELECT * FROM table WHERE YEAR(FROM_UNIXTIME(timestamp_field)) = YEAR(NOW()) AND MONTH(FROM_UNIXTIME(timestamp_field)) = MONTH(NOW()) 
3

計算第一個和最後secondof月份的時間戳和使用sql語句年BETWEEN

+1

當在日期中使用BETWEEN時,請注意,它可以包含您想要選擇的月份之外的日期。看到我的答案和評論之一:http://stackoverflow.com/questions/6095542/how-to-query-datetime-object-by-date/6096566#6096566 – Tony

+0

@Tony:有趣,謝謝。 – ZeissS

0
$begin = strtotime(date('m/01/Y')); 
$end = strtotime(date('m/t/Y')); 

$sql = "SELECT * FROM table WHERE date >= $begin AND date <= $end" 

這可能是最簡單和最快的解決方案。使用像FROM_UNIXTIME()這樣的SQL函數可以工作,但它可能會導致性能問題。