[英]How to get the number of days between two dates
我有一種情況,我需要找到兩行之間已經過日期字段的天數。 需要進行計算的行不會排序。
這是表的結構
Folio DATE
1 6/1/2015
2 4/1/2015
1 3/1/2015
4 2/1/2015
1 1/1/2015
基本上,我需要按日期排序並僅保留由作品集分組的最后兩個事務。 因此,在此示例中,將忽略2015年1月1日的作品集1的事務。
假設我需要執行以下操作:1。按作品集編號2進行分組。僅計算作品集最后兩次交易之間的天數。 例如,作品集#1僅包含2015年6月1日和2015年3月1日的交易。
我正在尋找的結果:
Folio FirstDATE LastDate #ofDays
1 3/1/2015 6/1/2015 90
任何MySQL專業人士在那里? 我的技能仍處於新手領域。 謝謝!
更新:
我設法提出以下內容:
SELECT
SubQuery.`Folio Number`,
SubQuery.LatestClosing,
SubQuery.FirstClosing,
DATEDIFF(SubQuery.LatestClosing, SubQuery.FirstClosing) AS numofdays
FROM (SELECT
Subquery.`Folio Number`,
SubQuery.LatestClosing,
SubQuery.FirstClosing
FROM (SELECT t.`Folio Number`,
MAX(t.`Closing Date`) AS LatestClosing,
(SELECT
s.`Closing Date`
FROM MLSFinalimport s
WHERE t.`Folio Number` = s.`Folio Number`
ORDER BY s.`Closing Date` DESC
LIMIT 1, 1) AS FirstClosing,
FROM MLSFinalimport t
GROUP BY t.`Folio Number`) SubQuery) SubQuery
這樣生成的結果如下所示:
LatestClosing First Closing numofdays
7/20/2016 5/9/2006 3725
這就是我需要的。 但是,我一直試圖為名為“Folio Number”的每一行添加原始列。 我該怎么辦?
非常感謝你。
MySQL的優點在於此? 可能相反.MySQL不支持窗口函數,因此您可以嘗試使用LIMIT/OFFSET
的相關查詢:
SELECT p.folio,p.max_d,p.second_d,DATEDIFF(p.max_d,p.second_d) as NumOfDays
FROM (
SELECT t.folio,MAX(t.date) as max_d,
(SELECT s.date FROM YourTable s
WHERE t.folio = s.folio
ORDER BY s.date DESC
LIMIT 1,1) as second_d
FROM YourTable t
GROUP BY t.folio) p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.