PHP mysql获取两个日期之间的减法
我有这样的表格结构:PHP mysql获取两个日期之间的减法,php,mysql,Php,Mysql,我有这样的表格结构: Id Name Rank Date ----------------------------------- 1 test 1000 2012-1-11 2 test 7000 2012-1-10 3 test2 2000 2012-1-11 4 test2 200 2012-1-10 5 test3 4000
Id Name Rank Date
-----------------------------------
1 test 1000 2012-1-11
2 test 7000 2012-1-10
3 test2 2000 2012-1-11
4 test2 200 2012-1-10
5 test3 4000 2012-1-10
6 test4 6500 2012-1-11
考虑到今天的日期是2012年1月11日
昨天的日期是2012年1月10日
在单个查询中,我得到了今天和昨天的每个用户名之间的差异。
i、 e测试昨天排名7000,今天排名1000。所以结果是6000
类似地,test2也有-1800
我需要输出为:
Name Difference (Orderby the difference Desc)
--------------------
test 6000
test2 -1800
如果今天或昨天的记录不可用,我们将不计算该记录
这在PHP MySQL中可能吗?实际上,您需要的所有内容都在这个页面上
你需要的一切都在这一页上 这个怎么样?(不太清楚你想达到什么目的……)请发表评论
select b.id, b.name,b.rank AS New,
b.Date new_date,
a.Rank as Old, a.date as old_date,
(b.rank-a.rank) diff
from t1 a
left join t1 b
on b.name = a.name
where b.date > a.date and b.date <= Now()
and datediff(b.date, a.date) = 1
having not diff is null and diff <> 0
order by diff desc
;
这个怎么样?(不太清楚你想达到什么目的……)请发表评论
select b.id, b.name,b.rank AS New,
b.Date new_date,
a.Rank as Old, a.date as old_date,
(b.rank-a.rank) diff
from t1 a
left join t1 b
on b.name = a.name
where b.date > a.date and b.date <= Now()
and datediff(b.date, a.date) = 1
having not diff is null and diff <> 0
order by diff desc
;
我试过这个。如果名称“test”有2条以上的记录,即“test”有6条不同日期的记录,那么它将为“test”生成3组结果。我只需要用今天的日期和昨天的日期来测试这个。因此,我将查询修改为select b.intProductId,b.intId,(b.intRank-a.intRank)diff from tbl_amazon_prorank a left join tbl_amazon_prorank b on b.dtDate
select b.id, b.name,b.rank AS New,
b.Date new_date,
a.Rank as Old, a.date as old_date,
(b.rank-a.rank) diff
from t1 a
left join t1 b
on b.name = a.name
where b.date > a.date and b.date <= Now()
and datediff(b.date, a.date) = 1
having not diff is null and diff <> 0
order by diff desc
;
ID NAME NEW NEW_DATE OLD OLD_DATE DIFF
3 test 8000 January, 12 2012 1000 January, 11 2012 7000
4 test2 2000 January, 11 2012 200 January, 10 2012 1800
1 test 1000 January, 11 2012 7000 January, 10 2012 -6000