PHP查询今日、昨日,本月、上月信息数量函数

本文介绍了一个用于统计特定时间范围内论坛主题数量的PHP函数。该函数通过不同的参数设置可以返回当天、昨天、本月或上个月的主题数。文章详细解释了如何根据时间条件构造SQL查询语句来获取所需的数据。
function get_zhuti($cid,$day_num='',$addtime='')
{
/*
0 当天
-1 昨天
30 本月
-30 上月
*/
if ($addtime == ''){
$addtime = time();
}
if ($cid != ''){
$where="where cid=$cid";
}else{
$where="where 1=1";
}


if ($day_num == ''){
$sql1 = "select count(tid) AS num from tay_thread $where";
}
if ($day_num == "0"){
    $sql1 = "select count(tid) AS num  from tay_thread where to_days(date_format(from_UNIXTIME(`addtime`),'%Y-%m-%d')) = to_days(now())";
}
if ($day_num == "-1"){
    $beginYesterday = mktime(0, 0, 0, date("m"), date("d") -1, date("Y")); 
    $endYesterday = mktime(0,0,0,date("m") ,date("d"),date("Y"));//
    $sql1 = "SELECT count(tid) AS num FROM tay_thread WHERE  addtime BETWEEN '$beginYesterday' AND '$endYesterday'";
//echo $beginYesterday;
//echo "<br/>";
//$lll = date('Y-m-d H:i:s', $beginYesterday);
//echo $lll;
//echo "<br/>";
//$sss = date('Y-m-d H:i:s', $endYesterday);
//echo $sss;
//exit;
}
if ($day_num == "30"){
$beginThismonth = mktime(0, 0, 0, date("m"), 1, date("Y"));
$endThismonth = mktime(23, 59, 59, date("m"), date("d"), date("Y"));
    $sql1 = "SELECT count(tid) AS num FROM tay_thread WHERE addtime BETWEEN '$beginThismonth' AND '$endThismonth' ";


}
if ($day_num == "-30"){
$beginThismonth = mktime(0, 0, 0, date("m")-1, 1, date("Y"));
$endThismonth = mktime(23, 59, 59, date("m"), date("d")-date("d"), date("Y"));
    $sql1 = "SELECT count(tid) AS num FROM tay_thread WHERE addtime BETWEEN '$beginThismonth' AND '$endThismonth' ";
}


$result1=mysql_query($sql1);
$zhuti=mysql_fetch_array($result1);
    $page = array();
$page['num']      = $zhuti[0];
    return $page;
}
在 PostgreSQL 中,窗口函数(Window Functions)是一种特殊的函数,它可以在数据集的一个子集(窗口)上执行计算,而不会减少返回的行数。如果你想要计算本月上月的值,可以使用 `CURRENT_DATE` 或 `CURRENT_TIMESTAMP` 来获取当前日期,并结合 `date_trunc` 和 `interval` 来计算相应的日期范围,然后使用窗口函数如 `SUM()` 来计算这些日期范围内的值。 以下是一个使用窗口函数来计算本月上月某个数值字段总和的示例 SQL 语句: ```sql SELECT date_trunc('month', your_date_column) AS month, SUM(your_value_column) OVER (PARTITION BY date_trunc('month', your_date_column)) AS total_this_month, SUM(your_value_column) OVER (PARTITION BY date_trunc('month', your_date_column - INTERVAL '1 month')) AS total_last_month FROM your_table_name WHERE your_date_column >= date_trunc('month', CURRENT_DATE) AND your_date_column < date_trunc('month', CURRENT_DATE) + INTERVAL '1 month'; ``` 这个查询做了以下几件事: 1. 使用 `date_trunc('month', your_date_column)` 来将日期字段 `your_date_column` 四舍五入到月份的第一天。 2. 使用 `SUM(your_value_column) OVER (...)` 来计算在窗口函数定义的分区内 `your_value_column` 字段的总和。 3. `PARTITION BY` 子句用来将窗口分割成按月分组的小窗口。 4. 计算当前月和上个月的总和。 5. `WHERE` 子句限定了只计算当前月的数据。 请根据你的实际需求替换 `your_date_column`、`your_value_column` 和 `your_table_name` 为具体的列名和表名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值