Hello.


Why don't you want to use just:

  select id from members where birthday = now();



See:



mysql> show create table members\G;

*************************** 1. row ***************************

Table: members

Create Table: CREATE TABLE `members` (

`id` int(11) NOT NULL auto_increment,

`birthdate` date default NULL,

PRIMARY KEY  (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8

1 row in set (0.00 sec)





mysql> select * from members;

+----+------------+

| id | birthdate  |

+----+------------+

|  1 | 2004-02-29 |

|  2 | 2005-02-28 |

|  3 | 2005-08-24 |

+----+------------+



mysql> select id from members where birthdate = now();

+----+

| id |

+----+

|  3 |

+----+



mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2005-08-24 20:27:20 |

+---------------------+

1 row in set (0.00 sec)



mysql> select version();

+-----------------------+

| version()             |

+-----------------------+

| 5.0.11-beta-debug-log |

+-----------------------+

1 row in set (0.00 sec)



If you add an index on birthdate, you can avoid table scans.



create index `birthdate` on members(birthdate);



mysql> explain select id from members where birthdate = now()\G;

*************************** 1. row ***************************

           id: 1

  select_type: SIMPLE

        table: members

         type: ref

possible_keys: birthdate

          key: birthdate

      key_len: 4

          ref: const

         rows: 1

        Extra: Using where

1 row in set (0.00 sec)







Pooly <[EMAIL PROTECTED]> wrote:

> Hi,

> 

> I would like to display a list of members who have their birthday a

> given day (today for instance).

> My idea is to store their birth date in a column, and then query the

> table against the column. But the query would be like :

> select id from members where MONTH(birthday) =3D MONTH(NOW()) AND

> DAY(birthday)=3DDAY(NOW())

> but it would perform a entire table scan with that.

> What would be your best strategy for that sort of query ?

> And how would you deal with 29th of february ?

> 

> --=20

> Pooly

> Webzine Rock : http://www.w-fenec.org/

> 



-- 
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.NET http://www.ensita.net/
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Gleb Paharenko
 / /|_/ / // /\ \/ /_/ / /__   [EMAIL PROTECTED]
/_/  /_/\_, /___/\___\_\___/   MySQL AB / Ensita.NET
       <___/   www.mysql.com




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

Reply via email to