0
SELECT medicalDate
FROM PilotMedical
WHERE pilotID = '1'

这将获得体检的日期。但是,我需要在此体检到期时返回,即自该日期起一年,以及该月的最后一天。例如,如果我在 2012 年 1 月 12 日接受体检,它将在 2013 年 1 月 31 日到期。

medicalDate 是一个“日期”类型。

我怎样才能在 SQL 中做到这一点?基本上我想让它在 2012 年 1 月的任何时候返回 2013 年 1 月 31 日进行体检。

如果没有,我想我可以在 VB 中做到这一点。我对学习如何在 VB 中做到这一点更感兴趣,因为我不打算在我的余生中使用 VB

编辑:

这将获得该月的最后一天

--Last Day of Any Month and Year
DECLARE @dtDate DATETIME
SET @dtDate = '8/18/2007'
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0))
LastDay_AnyMonth

ResultSet:
LastDay_AnyMonth
———————–
2007-08-31 23:59:59.000

现在正在寻找如何为此添加一年

4

2 回答 2

1

这演示了一种方法:

DECLARE @OrigDate datetime
DECLARE @NewDate datetime

SET @OrigDate = '1/12/2012'

SET @NewDate = DATEADD(Day, -1, DATEADD(Month, 1, Cast(CAST(Month(@OrigDate) as varchar) + '/1/' + CAST((Year(@OrigDate)+1) as varchar) as datetime)))

第 1 步:在下一年的同月创建一个新日期,但在 1 日。

第 2 步:增加一个月

第 3 步:减去一天

于 2012-07-22T02:03:58.200 回答
0
SELECT DATEADD(dd, -DAY(DATEADD(m,1,'2012-01-12')), DATEADD(m,13,'2012-01-12')) expirationDate

输出

2013-01-31 00:00:00.000

于 2012-07-22T02:02:12.653 回答