SQL选择medicalExamDate并添加一年和月末

时间:2012-07-22 01:40:00

标签: sql sql-server date

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

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

2 个答案:

答案 0 :(得分: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:在明年同一月创建一个新日期,但是在第一天。

第2步:添加一个月

第3步:减去一天

答案 1 :(得分: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