我有一个名为 users 的表,其中包含 id、name 和创建日期。现在我想分别显示在 1 月的第 1 周、第 2 周、第 3 周和第 4 周注册的用户。像这样我想展示整个月。我怎样才能做到这一点?
更新:
我试过了
SELECT id, date, WEEK(date) weekno FROM user WHERE MONTH(date) in (4,5)
希望能帮助到你
SELECT id, name, created, WEEK(created) week FROM user WHERE created_on BETWEEN start_date AND end_date ORDER BY week
最好的学习方法是自己做。您将不得不阅读GROUP BY
并且可以使用 MySQL 中的几个函数。您将需要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
到目前为止一切都应该没问题。