簡體   English   中英

SQL - 計算非連續日期期間的月差

[英]SQL - Count month difference in non-consecutive date period

我正在嘗試提取會員更新了多少個月的會員資格。 如圖所示,該會員從2018年開始訂閱了4年。但是,她在2019年結束的一年中停止了訂閱。然后,在2020年重新開始會員。

每個會員資格有效期為 12 個月。 如果我們查看從 2022-05-08 開始的最后一個成員資格,它將在 2023-05-08 結束。 但是,我只想更新總月數(getdate - 2022-09-14)。

請告知我如何處理這個問題。 謝謝!

在此處輸入圖像描述

假設您計划應用sum(monthcount) ,您可以將monthcount包裝在 CASE 語句中以檢查vip_end是否大於今天的日期:

sum(case when vip_end > getdate() then ... else monthcount end)

您在其中做什么...取決於您是否只想計算日期范圍內的不同月數(例如,1 月 31 日 -> 2 月 1 日被計為整月,因為它只考慮 1 月 -> 2 月):

datediff(month, datecreated, getdate())

或者也許根據一個月的平均天數計算月數:

datediff(day, datecreated, getdate())*12.0/365.25

或者可能是其他東西......這真的取決於你想要達到的細節水平。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM