簡體   English   中英

SQL如何顯示退貨日期和購買日期之間的月差

[英]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.

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