17
A
回答
40
三个月:
select * from table where timestamp >= now()-interval 3 month;
开始第一个月:
select * from table where timestamp >= last_day(now()) + interval 1 day - interval 3 month;
1
假设你正在使用SQL Server(Oracle,MySQL等和其他有类似的日期函数),你可以使用dateadd函数来添加或减去当前日期的时间间隔。
如果你想了整整三个月,你可以从今天减去3月:DATEADD(m,-3,getdate())
但是,你的状态,你只想从一月,二月和三月的数据。你必须要基于今天的日期一些计算:dateadd(m,-2, CONVERT(datetime, CONVERT(VARCHAR(2), MONTH(getdate())) + '/01/' + CONVERT(VARCHAR(4), YEAR(getdate()))))
而在最后,得到这样
SELECT fields
FROM table
WHERE timestampfield > DATEADD(m,-2, CONVERT(datetime, CONVERT(VARCHAR(2), MONTH(getdate())) + '/01/' + CONVERT(VARCHAR(4), YEAR(getdate()))))
---编辑--- ERF,我只注意到了“MySQL的”标签查询......你可以在MySQL日期函数的详细信息在这里:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
7
要获得当月的第一天,你可以这样做:
DATE_FORMAT(CURDATE(), '%Y-%m-01')
如果当前日期是2013-03-13
,它将返回2013-03-01
,我们可以仅从此日期减去2个月获得2013-01-01
。您的查询可能是这样的:
SELECT *
FROM yourtable
WHERE data >= DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 2 MONTH
1
我知道这是一个老问题,但可能拯救别人的时间和总结上述答案最多的需要(1)从当前的月份和日期的情况下,(2 )日期从之前2个月(共同显示在数据统计):
WHERE ((timestamp >= NOW() - DATE_FORMAT(CURDATE(), '%Y-%m-01'))
OR (timestamp >= DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 2 MONTH))
相关问题
- 1. MySQL:从当前月份和前3个月返回记录
- 2. 如果存在3个月内的最近记录
- 3. 如何按月回复最近六个月的记录?
- 4. 仅连续3个月的SQL记录
- 5. SQL查询查找最近3个月的记录
- 6. 如何仅返回基于日期的最近记录
- 7. 仅返回最近TIME值的记录吗?
- 8. 仅显示最近记录
- 9. MYSQL - 返回GROUP BY前的最近记录
- 10. mysql选择记录大于3个月
- 11. 从最近的月份获取记录
- 12. 使用Geokit返回最近的记录返回PG :: SyntaxError
- 13. 在sql server中获取最近3个月的月份
- 14. 仅在codeigniter上返回单个记录
- 15. MySQL中TIME字段的最近记录
- 16. MySQL查询 - 每个月的过去12个月的记录返回值
- 17. 在一个月内选择最近的记录?
- 18. 查找最近一个月和一年在不同的记录
- 19. django返回每个用户的最近记录
- 20. MySQL UNION ALL仅从每个表中返回一条记录
- 21. 如何选择最近3个月?
- 22. pandas过滤条件最近3个月
- 23. 有一对多关系的SQL存储过程仅返回最近记录
- 24. 分组只有在LINQ查询返回最近的记录
- 25. CASE 3个月后返回
- 26. MySQL的选择最近的记录ID
- 27. 在MySQL中返回的限制记录
- 28. Mysql - 在记录之前N天创建的最近记录
- 29. 最近3周的第一天和最近3个月的第一天
- 30. MySQL的返回一个记录是不一样的最后一个记录
@StephenKloder:能否请你解释查询这里有什么用of'interval1天“? – kreya 2015-01-06 10:11:53