簡體   English   中英

MsAccess中的Datediff

[英]Datediff in MsAccess

我被困在一個地方。 我在Access女士中使用DateDiff,它給了我適當的輸出,例如

StartDate is 10-Sep-2016
EndDate is 15-Oct-2016

Total Days which I will get is 35
& months will i get is 1 Month

DateDiff('d',StartDate,EndDate)

**但是如果要超過30天,我希望輸出為2個月。 如果是61天,則3個月,依此類推。

**IIFFF days diffrence is 
   29 Days then output should be 1 months
   30 Days then output should be 1 months
   32 Days then output should be 2 months
   60 Days then output should be 2 months
   62 Days then output should be 3 months**

在MsAccess的DateDiff中是否可能,或者是否有其他可用功能,以便我可以實現相同的輸出。**

您可以使用條件邏輯來做到這一點。 也許是這樣的:

select iif(DateDiff('d', StartDate, EndDate) > 30,
           DateDiff('d',StartDate,EndDate) & " days",
           "2 months"
          )

您認為超過30天為“ 2個月”的邏輯似乎很奇怪。 通常,我認為邏輯將如下所示:

select iif(DateDiff('d', StartDate, EndDate) > 30,
           DateDiff('d', StartDate, EndDate) & " days",
           DateDiff('m', StartDate, EndDate) & " months"
          )

看來您對正數天的最小月份數是1,因此:

MonthCount = Sgn(DateDiff("d",StartDate,EndDate)) + DateDiff("m",StartDate,EndDate)

編輯

對於將產生示例輸出的30天切割,請在查詢中使用以下簡單公式:

MonthCount: (DateDiff("d",[StartDate],[EndDate])-1)\30+1

這個邏輯足以修改您的SQL函數嗎?

Public Function FN_GET_MONTH(iDays As Long, Optional iDaysInMonth As Long = 30)

    If (iDays / iDaysInMonth) > iDays \ iDaysInMonth Then
        FN_GET_MONTH = (iDays \ iDaysInMonth) + 1
    Else
        FN_GET_MONTH = (iDays \ iDaysInMonth)
    End If

End Function

?FN_GET_MONTH(29) = 1
?FN_GET_MONTH(31) = 2
?FN_GET_MONTH(60) = 2
?FN_GET_MONTH(80) = 3
?FN_GET_MONTH(91) = 4

您可以擁有此公共功能,並在您的SQL代碼中使用它,例如

FN_GET_MONTH(DateDiff("d", StartDate, EndDate))

該查詢似乎可以提供您想要的結果:

SELECT 
    StartDate,
    EndDate
    numDays,
    ((numDays - 1) \ 30) + 1 AS numMonths
FROM
    (
        SELECT
            StartDate,
            EndDate,
            DateDiff("d", StartDate, EndDate) AS numDays
        FROM YourTable
    )

它給我

numDays  numMonths
-------  ---------
...
     29          1
     30          1
     31          2
     32          2
...
     59          2
     60          2
     61          3
     62          3
...

暫無
暫無

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

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