-3

我有一个名为 users 的表,其中包含 id、name 和创建日期。现在我想分别显示在 1 月的第 1 周、第 2 周、第 3 周和第 4 周注册的用户。像这样我想展示整个月。我怎样才能做到这一点?

更新:

我试过了

SELECT id, date, WEEK(date) weekno FROM user WHERE MONTH(date) in (4,5)
4

2 回答 2

2

希望能帮助到你

SELECT id, name, created, WEEK(created) week FROM user WHERE created_on BETWEEN start_date AND end_date ORDER BY week

于 2013-04-23T10:25:14.737 回答
1

最好的学习方法是自己做。您将不得不阅读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到目前为止一切都应该没问题。

于 2013-04-23T10:55:27.893 回答