Reputation: 2546
How can I get the current week in a generic query, currently I can get a date range but I would like to get the current week in a dynamic way.
This is what I have:
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)
Based on todays date I want to get something like:
11-04-2013 11-05-2013 11-06-2013 11-07-2013 11-08-2013 11-09-2013 11-10-2013
Upvotes: 1
Views: 689
Reputation: 92785
One way of doing it in 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
Output:
| DATE | |------------| | 2013-11-04 | | 2013-11-05 | | 2013-11-06 | | 2013-11-07 | | 2013-11-08 | | 2013-11-09 | | 2013-11-10 |
Here is SQLFiddle demo
In 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
Here is SQLFiddle demo
Upvotes: 1