Hi, just an odd query.

Background: I'm trying to calculate the Next Thursday and Next Friday dates from today (whenever that is), and return today's date if it's already a Thursday or a Friday.

As a bit of a traditionalist, I've been used to modulo arithmetic always giving a positive answer, so I was hoping to use the following the:

Today       Weekday()   Next Thursday   Next Friday
-----       ---------   -------------   -----------
Monday          0        add 3 days      add 4 days
Tuesday         1        add 2 days      add 3 days
Wednesday       2        add 1 days      add 2 days
Thursday        3        add 0 days      add 1 days
Friday          4        add 6 days      add 0 days
Saturday        5        add 5 days      add 6 days
Sunday          6        add 4 days      add 5 days

As you can see the additional days are cyclic, so given a date d, so for Thrusday say, I thought I would use a calc something like this:

mod(3-weekday(curdate()),7);

But MySQL doesn't seems happy to give back negative numbers:

select d, dayname(d) as day, mod(3-weekday(d),7) as diff from mydates;

+------------+-----------+------+
| d          | day       | diff |
+------------+-----------+------+
| 2004-08-01 | Sunday    |   -3 |
| 2004-08-02 | Monday    |    3 |
| 2004-08-03 | Tuesday   |    2 |
| 2004-08-04 | Wednesday |    1 |
| 2004-08-05 | Thursday  |    0 |
| 2004-08-06 | Friday    |   -1 |
| 2004-08-07 | Saturday  |   -2 |
| 2004-08-08 | Sunday    |   -3 |
| 2004-08-09 | Monday    |    3 |
| 2004-08-10 | Tuesday   |    2 |
+------------+-----------+------+

I shall persevere and do it using an if(x,y,x) but it seems clumsy, and I wondered if anyone had any betters ideas?

R


-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to