从日期字段中获取所有唯一星期一列表的最有效方法是什么?
当我不关心效率时,我做了类似的事情:
DATE-weekday(DATE) + 1
。但是现在我需要在一个大型数据集上计算它,我不希望我的用户希望使用魔方,因为它需要很长时间。 :)
是的,该字段已编入索引。
修改
我需要的是包含记录的所有周的列表。我正在创建一个工资核算报告,用户将选择一周来过滤报告。
以下是我提出的建议:
SELECT DISTINCT ((DATE(`timStart`)-DAYOFWEEK(`timStart`))+2)
FROM `time`
ORDER BY 1 DESC
任何人都有任何改进建议吗?
答案 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可以从那里处理事情。