[英]SQL How To Display Month Difference Between Return And Purchase Date
我需要幫助編寫查詢,說明退貨日期和購買日期之間的月差,請參見下面的示例。
產品 | 購買日期 (dd/mm/yy) | 返回日期 (dd/mm/yy) | 月(預期結果) |
---|---|---|---|
A車 | 01/01/2021 | 15/01/2021 | 第0個月 |
乙車 | 01/01/2021 | 20/02/2021 | 第 1 個月 |
車C | 01/01/2021 | 01/03/2021 | 第2個月 |
其中 Month0 = 同月,Month1 = 下個月,依此類推。
我想過使用 MONTH 函數。 像 MONTH(ReturnDate) - MONTH(PurchaseDate) 之類的東西,但是,當我有不同的年份時,我發現了一個問題。 感謝您的幫助。
提前致謝!
您可以在 MS SQL 中使用datediff
函數。 我假設這在您的 SQL 版本中可用。
在以下示例中,我使用日期格式mm/dd/yyyy
但您可以根據示例將其更改為dd/mm/yyyy
。
select 'Month' + cast(datediff(month, '01/01/2021', '01/15/2021') as varchar)
select 'Month' + cast( datediff(month, '01/01/2021', '02/20/2022') as varchar)
-- output statement 1
Month0
-- output statement 2
Month13
如果您使用的是 SQL Server,那么您可以使用datediff()
來獲取差異,然后使用字符串 'Month' 使用 concat()。
select Product, PurchaseDate, ReturnDate,
concat('Month',datediff(month,PurchaseDate,ReturnDate))Month
from yourtable
正如您在問題中提到的,您還可以使用Month()
函數來獲取這兩個月份,然后從購買月份中減去返回月份
select Product, PurchaseDate, ReturnDate,
concat('Month',month(ReturnDate)-month(PurchaseDate))Month
from yourtable
對於 MySQL,它將是timestampdiff()
select Product, PurchaseDate, ReturnDate,
concat('Month',timestampdiff(month,PurchaseDate,ReturnDate))Month
from yourtable
對於 Oracle,它將是MONTHS_BETWEEN()
。 在這種情況下,較大的日期將首先放在函數中,然后是較小的日期。
select Product, PurchaseDate, ReturnDate,
concat('Month',MONTHS_BETWEEN(ReturnDate,PurchaseDate))Month
from yourtable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.