首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MS Access查询查找给定日期的下一次出现

问使用MS Access查询查找给定日期的下一次出现
EN

Stack Overflow用户
提问于 2016-06-21 14:56:13
回答 3查看 371关注 0票数 0

我目前正在开发一个数据库,该数据库存储软件许可信息,如软件名称、购买日期、成本、数量等。软件拥有12个月后,我们必须支付维修费。

因此,我的问题是如何设计一个查询,该查询将获取购买日期并计算要存储在“维护日期”字段中的下一个日期。如果许可证是在1999年12月31日购买的,我需要在2016年12月31日支付维持费。

我对MS或SQL查询没有太多的经验,在研究了一段时间之后,我甚至不确定这是可能的。我很感激你们能给我什么帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-22 09:01:37

这里有一个函数可以做到这一点:

代码语言:javascript
复制
Public Function DateNextAnnualDay( _
    ByVal AnnualDay As Date) _
    As Date

    Dim SomeDate        As Date
    Dim NextAnnualDay   As Date
    Dim Years           As Integer

    SomeDate = Date

    NextAnnualDay = AnnualDay
    Years = DateDiff("yyyy", AnnualDay, SomeDate)
    If Years < 0 Then
        ' Don't calculate hypothetical annual days.
    Else
        NextAnnualDay = DateAdd("yyyy", Years, AnnualDay)
        If DateDiff("d", SomeDate, NextAnnualDay) <= 0 Then
            ' Next annual day falls earlier in the year than SomeDate.
            NextAnnualDay = DateAdd("yyyy", Years + 1, AnnualDay)
        End If
    End If

    DateNextAnnualDay = NextAnnualDay

End Function
票数 1
EN

Stack Overflow用户

发布于 2016-06-21 15:05:11

这是语法

代码语言:javascript
复制
SELECT DateAdd("yyyy",1,[MyDate]) AS MaintDate
FROM Table;
票数 0
EN

Stack Overflow用户

发布于 2016-06-21 15:22:29

如果需要进行更复杂的查询,可以在模块中编写函数,然后使用VBA在查询中访问函数。例如,您可以遍历一个循环来匹配条件。

代码语言:javascript
复制
Function GetNextDate(ByVal dteOriginalDate As Date) As Date

While dteOriginalDate <= DateTime.Now

    dteOriginalDate = DateAdd("Yyyy", 1, dteOriginalDate)

Wend

GetNextDate = dteOriginalDate

End Function

将从原始日期到未来日期的时间点迭代添加一年。您可以将其构建到一个查询中(使用右键单击-> build),以便每行运行您的代码并应用逻辑。

这将允许您将原始许可日期存储在数据库中,并计算下一个到期日,而不必知道(或修改)中间年份。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37947871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档