1

如何在通用查询中获取当前周,目前我可以获得日期范围,但我想以动态方式获取当前周。

这就是我所拥有的:

WITH mycte AS
(
  SELECT CAST('2011-01-01' AS DATETIME) DateValue
  UNION ALL
  SELECT  DateValue + 1
  FROM    mycte   
  WHERE   DateValue + 1 < '2021-12-31'
)
SELECT  DateValue
FROM    mycte
OPTION (MAXRECURSION 0)

根据今天的日期,我想得到类似的东西:

11-04-2013 11-05-2013 11-06-2013 11-07-2013 11-08-2013 11-09-2013 11-10-2013 
4

1 回答 1

1

在 SQL Server 中执行此操作的一种方法

WITH weekdays AS 
(
  SELECT 0 day
  UNION ALL
  SELECT day + 1 FROM weekdays WHERE day < 6
)
SELECT DATEADD(DAY, day, DATEADD(DAY, 2-DATEPART(WEEKDAY, CONVERT (date, GETDATE())), CONVERT (date, GETDATE()))) date
    FROM weekdays

输出:

| 日期 |
|------------|
| 2013-11-04 |
| 2013-11-05 |
| 2013-11-06 |
| 2013-11-07 |
| 2013-11-08 |
| 2013-11-09 |
| 2013-11-10 |

这是SQLFiddle演示

在 MySQL 中

SELECT CURDATE() + INTERVAL 1 - DAYOFWEEK(CURDATE()) DAY + INTERVAL day DAY date
  FROM
(
  SELECT 1 day UNION ALL 
  SELECT 2 UNION ALL 
  SELECT 3 UNION ALL 
  SELECT 4 UNION ALL 
  SELECT 5 UNION ALL 
  SELECT 6 UNION ALL 
  SELECT 7
) w

这是SQLFiddle演示

于 2013-11-08T21:32:18.083 回答