我有一个名为users的表,其中包含id,name和创建日期。现在我想显示在1月1日,2日,3日和4日分别注册的用户。像这样我想要整个月展示。我怎样才能做到这一点?
更新
我试过
SELECT id, date, WEEK(date) weekno FROM user WHERE MONTH(date) in (4,5)
答案 0 :(得分:2)
希望有所帮助
SELECT id,name,created,WEEK(created)week FROM用户WHERE created_on BETWEEN start_date AND end_date ORDER BY week
答案 1 :(得分:1)
最好的学习方式就是自己动手。您必须阅读GROUP BY
,several functions in MySQL you can use。您需要MONTH()
和WEEK()
,可能需要YEAR()
。
亲自试试,如果您仍有问题,我们很乐意在您向我们展示您尝试过的内容以及问题所在的时候提供帮助。
<强>更新强>
你试过这个:
SELECT id, date, WEEK(date) weekno FROM user WHERE MONTH(date) in '4,5'
现在,
SELECT ... WEEK(`date`)
您的列名是date
吗?它也是MySQL的关键字。像我一样把它放在反引号中或重命名列。
您是否了解过WEEK()
的(可选)附加参数?一切都好吗?
... FROM user WHERE MONTH(date) in '4,5'
遗憾的是,语法错误。你必须这样写:
... FROM user WHERE MONTH(`date`) IN (4, 5)
此外,您还必须考虑可能有多年的数据。如果你不添加
... AND YEAR(`date`) = 2013
或类似的东西,你可能会得到错误的数据。如果您处理多年,您当然也应该在SELECT
子句中添加年份。
如果您希望获得用户在WHERE
子句中指定的时间段内注册的信息,那么到目前为止一切都应该没问题。