MySQL根据一年中的一个月获取所有记录

时间:2016-08-01 05:25:35

标签: java mysql sql

我有一个表,在该表中有一个名为date_created的列,它是TIME STAMP格式2016-07-20 11:30:15,当我获取记录时,我必须只传递月< / strong>和在我的前端字段中,如(month_no / year)1/20162/20163/2016 .....所以我必须根据一个月获取所有记录。那么我怎么能实现这个查询。到目前为止,我试过这样。

SELECT t.*
FROM stock t
WHERE MONTH(str_to_date(t.date_created,'%Y/%M')) = 7

2 个答案:

答案 0 :(得分:2)

由于您有timestamp列,因此无需担心太多。您需要将月份编号和年份编号放在相应的位置。

SELECT t.*
FROM stock t
WHERE MONTH(t.date_created) = ?
AND YEAR(t.date_created) = ?;

如果月份= 7且年份= 2016,那么您的查询

SELECT t.*
FROM stock t
WHERE MONTH(t.date_created) = 7
AND YEAR(t.date_created) = 2016;

答案 1 :(得分:0)

如果您已经在列上创建了索引,那么我建议您不要在where子句中使用任何函数,这会使查询变慢且不可搜索..请使用以下链接为什么我这样说

What makes a SQL statement sargable?

我建议你使用以下查询。

SELECT t.*
FROM stock t
 WHERE t.date_created between '2016-07-01 00:00:00.000' AND '2016-07-31 00:00:00.000'