我有一个表,在该表中有一个名为date_created
的列,它是TIME STAMP格式2016-07-20 11:30:15
,当我获取记录时,我必须只传递月< / strong>和年在我的前端字段中,如(month_no / year)1/2016
,2/2016
,3/2016
.....所以我必须根据一个月获取所有记录。那么我怎么能实现这个查询。到目前为止,我试过这样。
SELECT t.*
FROM stock t
WHERE MONTH(str_to_date(t.date_created,'%Y/%M')) = 7
答案 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'