I believe you are not letting MySQL do enough work for you. The date
format is perfect, even as a string, to perform the comparison you are
trying to perform.
SELECT @currTime := NOW();
+-+
| @currTime := NOW() |
+-+
| 2004-08-26 12:48:16 |
+-+
1 row in set (0.00 sec)
SELECT @currTime as CurrentTime
, (@currTime <= '2005-08-01')
, (@currTime > '2005-08-01')
, (@currTime > '2004-08-26 12:00:00')\G
*** 1. row ***
CurrentTime: 2004-08-26 12:48:16
(@currTime <= '2005-08-01'): 1
(@currTime > '2005-08-01'): 0
(@currTime > '2004-08-26 12:00:00'): 1
1 row in set (0.00 sec)
As you can see, MySQL is perfectly capable of comparing dates and
datetimes if you just let it. There is no reason to convert them to any
sort of intermediate value as it will do it for you internally and
automatically. Please read this to see just how many different ways Dates
can be specified:
http://dev.mysql.com/doc/mysql/en/DATETIME.html
You could try this as your query:
SET @date1 ='2004-08-12', date2='2004-08-18';
SELECT *
FROM account
WHERE (date >= date1)
AND (date <= date2);
and it should work just fine.
Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine
"Yong Wang" <[EMAIL PROTECTED]> wrote on 08/26/2004 12:31:46 PM:
> Hi, All:
> I have a database which contains date attribute in string format
> (like 2004-08-12). I want to genearte a report based on period time.
> I use the syntax:
> date1 ='2004-08-12'
> date2='2004-08-18'
> SELECT * FROM account WHERE (TO_DAYS(date) >= TODAYS(date1)) and
> (TO_DAYS(date) <= TO_DAYS(date2));
> The report script complains the condition after WHERE clause. The
> reason I use TO_DAYS is that I want to convert
> string date data into integer for comparison. Can I use TO_DAYS() like
> this way ?
> Thanks a lot.
>
> Yong
>
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]
>