tags:

views:

130

answers:

9
+1  Q: 

mysql query

Hi, I am having table in the below format. I need mysql query to get the no of rows perday when i give date between 2008-10-12 and 2008-10-13

 Name | KW     | KV   | I    | Date                |
------+--------+------+------+---------------------+
 UPS1 | 353.50 | NULL | NULL | 2008-10-12 00:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 01:54:36 |
 UPS1 | 351.90 | NULL | NULL | 2008-10-12 02:54:36 |
 UPS1 | 351.60 | NULL | NULL | 2008-10-12 03:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 04:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 05:54:36 |
 UPS1 | 351.90 | NULL | NULL | 2008-10-12 06:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 07:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 08:54:36 |
 UPS1 | 353.20 | NULL | NULL | 2008-10-12 09:54:36 |
 UPS1 | 353.50 | NULL | NULL | 2008-10-12 10:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 11:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 12:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 13:54:36 |
 UPS1 | 353.20 | NULL | NULL | 2008-10-12 14:54:36 |
 UPS1 | 353.50 | NULL | NULL | 2008-10-12 15:54:36 |
 UPS1 | 352.90 | NULL | NULL | 2008-10-12 16:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 17:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 18:54:36 |
 UPS1 | 352.90 | NULL | NULL | 2008-10-12 19:54:36 |
 UPS1 | 352.20 | NULL | NULL | 2008-10-12 20:54:36 |
 UPS1 | 352.50 | NULL | NULL | 2008-10-12 21:54:36 |
 UPS1 | 352.90 | NULL | NULL | 2008-10-12 22:54:36 |
 UPS1 | 353.20 | NULL | NULL | 2008-10-12 23:54:36 |
 UPS1 | 355.80 | NULL | NULL | 2008-10-13 00:54:36 |
 UPS1 | 358.40 | NULL | NULL | 2008-10-13 01:54:36 |
 UPS1 | 358.00 | NULL | NULL | 2008-10-13 02:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 03:54:36 |
 UPS1 | 357.70 | NULL | NULL | 2008-10-13 04:54:36 |
 UPS1 | 357.40 | NULL | NULL | 2008-10-13 05:54:36 |
 UPS1 | 357.40 | NULL | NULL | 2008-10-13 06:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 07:54:36 |
 UPS1 | 357.10 | NULL | NULL | 2008-10-13 08:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 09:54:36 |
 UPS1 | 357.70 | NULL | NULL | 2008-10-13 10:54:36 |
 UPS1 | 357.40 | NULL | NULL | 2008-10-13 11:54:36 |
 UPS1 | 357.40 | NULL | NULL | 2008-10-13 12:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 13:54:36 |
 UPS1 | 357.10 | NULL | NULL | 2008-10-13 14:54:36 |
 UPS1 | 358.00 | NULL | NULL | 2008-10-13 15:54:36 |
 UPS1 | 359.30 | NULL | NULL | 2008-10-13 16:54:36 |
 UPS1 | 357.10 | NULL | NULL | 2008-10-13 17:54:36 |
 UPS1 | 358.40 | NULL | NULL | 2008-10-13 18:54:36 |
 UPS1 | 357.70 | NULL | NULL | 2008-10-13 19:54:36 |
 UPS1 | 359.00 | NULL | NULL | 2008-10-13 20:54:36 |
 UPS1 | 358.70 | NULL | NULL | 2008-10-13 21:54:36 |
 UPS1 | 358.70 | NULL | NULL | 2008-10-13 22:54:36 |
 UPS1 | 358.40 | NULL | NULL | 2008-10-13 23:54:36 |
+8  A: 

I have changed the query so that Date column case matches exactly what you have in your query results.

select Date, count(Date)
from TABLE
where Date >= '2008-10-12' and Date <= '2008-10-13'
group by Date

You will need to change TABLE in the from clause, but everything else should be correct for your table.

edit:

I have a table with a similar structure and I changed a date column to be named 'Date'. The following worked for me.

mysql> select Date, count(Date) 
    from calendar_items 
    where date between '2008-12-12' and '2008-12-13' 
    group by Date;

+------------+-------------+
| Date       | count(Date) |
+------------+-------------+
| 2008-12-12 |          14 | 
| 2008-12-13 |           6 | 
+------------+-------------+
2 rows in set (0.00 sec)

mysql>
ewalshe
Exactly how I'd do it (the second one that is) +1
Kezzer
I had left the from clause out of the statement
ewalshe
Don't try. Do. There is no try.
paxdiablo
@Pax - I'm Irish. We disguise a command as a suggestion. :)
ewalshe
A: 

Hi ewalshe, The query is not working. thanks

Look at Riho's answer or my updated one
ewalshe
Please delete this, it should have been a comment to ewalshes answer.
paxdiablo
+3  A: 

Shouldn't it be:

select date, count(date) where date >= '2008-10-12' and date <= '2008-10-13' group by date

Riho
Or see ewalshe's BETWEEN statement, but this would do it too.
Kezzer
A: 

Hi, Please take a look for fetching records per day..you can use like this---> SELECT something FROM tbl_name WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

A: 

Hi ewalshe, I have tried the another query given by you, But the following error is displayed -> ; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where date between '2008-10-12' and '2008-10-13' group by count(date)' at line 2

change the group by to GROUP BY Date
ewalshe
A: 

Regarding your syntax error: As "date" is a reserved term in mysql, u have to escape it in your queries.

With this in mind ewalshes query should work:

select `Date`, count(`Date`)
from TABLENAME
where `Date` between '2008-10-12' and '2008-10-13'
group by `Date`
Karsten
A: 

Hi kartsten.

Even your query is not working Pls this query is urgent for me

what exactly is the error message?
Karsten
A: 

Hi, anybody can help me

I have updated the query
ewalshe
A: 

I'd try this:

SELECT count( * ) , date( `date` )
FROM `myTableName`
GROUP BY date( `date` )

(Tested on MySql 4.1)

Rowland Shaw