开发环境:php+mysql
table表中有一个字段starttime,时间格式形如:2009-09-18 10:15:16
现在想统计任意一年中的一个月数据,并按一个月中的天数统计记录数,$date 是php中定义的变量,格式形如:2009-09-18
我现在按照一个月的天数进行统计,可是mysql不支持YEAR中带变量的参数,如果写成YEAR('2009-09-18')就能正确执行,但是$date是从表单中获取的数据,它是实时更新的,请问这个问题该怎么实现?
SELECT DATE_FORMAT( starttime, '%d' ) AS day , count(*) AS num
FROM table
where YEAR($date)=YEAR(starttime)
AND MONTH($date)=MONTH(starttime)
GROUP BY day
table表中有一个字段starttime,时间格式形如:2009-09-18 10:15:16
现在想统计任意一年中的一个月数据,并按一个月中的天数统计记录数,$date 是php中定义的变量,格式形如:2009-09-18
我现在按照一个月的天数进行统计,可是mysql不支持YEAR中带变量的参数,如果写成YEAR('2009-09-18')就能正确执行,但是$date是从表单中获取的数据,它是实时更新的,请问这个问题该怎么实现?
SELECT DATE_FORMAT( starttime, '%d' ) AS day , count(*) AS num
FROM table
where YEAR($date)=YEAR(starttime)
AND MONTH($date)=MONTH(starttime)
GROUP BY day
==>> YEAR(2009-09-18)
需要加上引号 生成 YEAR('2009-09-18')
Query OK, 0 rows affected (0.00 sec)mysql> select year(@a);
+----------+
| year(@a) |
+----------+
| 2009 |
+----------+
1 row in set (0.00 sec)
定义变量 或者在mysql中写个参数函数
不是很明白你的需求
因为你如果只是 YEAR($date) 最终你的SQL语句是 YEAR(2009-09-18) 这并不是正确的msyql日期格式,需要加上引号。形成 YEAR('2009-09-18') , PHP 中怎么把引号加上,建议你看一下PHP的手册。
+---------------------+
| d |
+---------------------+
| 2009-07-05 15:20:10 |
| 2009-07-14 10:30:00 |
| 2009-04-20 05:15:40 |
+---------------------+
3 rows in set (0.00 sec)
<?php
$conn = mysql_connect("localhost","root","");
mysql_select_db("csdn",$conn);
$year = "2009-05-12";
$sql = "select * from d where year(d)=year('$year')";
echo $sql;
mysql_query("set names gbk",$conn);
$result = mysql_query($sql,$conn);
while($row = mysql_fetch_array($result)){
echo $row[0];
}
?>
mysql_query("
SELECT DATE_FORMAT( starttime, '%d' ) AS day , count(*) AS num
FROM table
where YEAR('".$date."')=YEAR(starttime)
AND MONTH('".$date."')=MONTH(starttime)
GROUP BY day
")
看起来这个YEAR括号里还真是花哨啊!哈哈!有单引号、双引号、还要带点