2011-09-30 214 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函数可以工作,但它可能会导致性能问题。