MySQL函数获取星期一列表

时间:2010-08-03 17:16:56

标签: sql mysql

从日期字段中获取所有唯一星期一列表的最有效方法是什么?

当我不关心效率时,我做了类似的事情:

DATE-weekday(DATE) + 1。但是现在我需要在一个大型数据集上计算它,我不希望我的用户希望使用魔方,因为它需要很长时间。 :)

是的,该字段已编入索引。

修改
我需要的是包含记录的所有周的列表。我正在创建一个工资核算报告,用户将选择一周来过滤报告。

以下是我提出的建议:

SELECT DISTINCT ((DATE(`timStart`)-DAYOFWEEK(`timStart`))+2)
FROM `time` 
ORDER BY 1 DESC

任何人都有任何改进建议吗?

1 个答案:

答案 0 :(得分:3)

“来自日期字段的独特星期一”应该简单如下:

SELECT DISTINCT(`date`) FROM `table` WHERE WEEKDAY(`date`)=0

“我们有日期值的周数”应该简单如下:

SELECT DISTINCT(WEEK(`date`)) FROM `table` WHERE YEAR(`date`)=2010;

SELECT WEEK(now()),YEAR(now());

+-------------+-------------+
| WEEK(now()) | YEAR(now()) |
+-------------+-------------+
|          31 |        2010 | 
+-------------+-------------+

使用

在您的其他工资核算查询中也会对您有所帮助
WHERE WEEK(`date`)=31

相信mysql可以从那里处理事情。