I've been looking around for a chunk of code to find the first day of the current week, and everywhere I look I see this:

```
DATEADD(WK, DATEDIFF(WK,0,GETDATE()),0)

```

Every place says this is the code I'm looking for.

The problem with this piece of code is that if you run it for Sunday it chooses the following Monday.

---

If I run:

```
SELECT GetDate() , DATEADD(WK, DATEDIFF(WK,0,GETDATE()),0)

```

Results for today (Tuesday):

```
2013-05-14 09:36:39.650................2013-05-13 00:00:00.000

```

This is correct, it chooses Monday the 13th.

---

If I run: 

```
SELECT GetDate()-1 , DATEADD(WK, DATEDIFF(WK,0,GETDATE()-1),0)

```

Results for yesterday (Monday):

```
2013-05-13 09:38:57.950................2013-05-13 00:00:00.000

```

This is correct, it chooses Monday the 13th.

---

If I run: 

```
SELECT GetDate()-2 , DATEADD(WK, DATEDIFF(WK,0,GETDATE()-2),0)

```

Results for the 12th (Sunday):

```
2013-05-12 09:40:14.817................2013-05-13 00:00:00.000

```

This is NOT correct, it chooses Monday the 13th when it should choose the previous Monday, the 6th.

Can anyone illuminate me as to what's going in here? I find it hard to believe that no one has pointed out that this doesn't work, so I'm wondering what I'm missing.