0
SELECT medicalDate
FROM PilotMedical
WHERE pilotID = '1'

これは、健康診断の日付を取得します。ただし、この健康診断の期限が切れた日(日付から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

これに1年を追加する方法を探しています

4

2 に答える 2

1

これは、それを行う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:1か月追加

ステップ3:1日を差し引く

于 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 に答える