Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择medicalExamDate并添加年份和月末_Sql_Sql Server_Date - Fatal编程技术网

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

SQL选择medicalExamDate并添加年份和月末,sql,sql-server,date,Sql,Sql Server,Date,这将得到体检的日期。但是,我需要在体检到期时返回,这是一年后的日期,也是一个月的最后一天。例如,如果我在2012年1月12日接受体检,体检将于2013年1月31日到期 medicalDate是“日期”类型 如何在SQL中实现这一点?基本上,我想让它在2013年1月31日返回,以便在2012年1月的任何时候进行体检 如果没有,我想我可以用VB来做。我对学习如何使用VB更感兴趣,因为我不打算在我的余生中使用VB 编辑: 这将是本月的最后一天 SELECT medicalDate FROM Pilot

这将得到体检的日期。但是,我需要在体检到期时返回,这是一年后的日期,也是一个月的最后一天。例如,如果我在2012年1月12日接受体检,体检将于2013年1月31日到期

medicalDate是“日期”类型

如何在SQL中实现这一点?基本上,我想让它在2013年1月31日返回,以便在2012年1月的任何时候进行体检

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

编辑:

这将是本月的最后一天

SELECT medicalDate
FROM PilotMedical
WHERE pilotID = '1'
现在正在寻找如何增加一年到这一点

--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
输出


2013-01-31 00:00:00.000这说明了一种方法:

SELECT DATEADD(dd, -DAY(DATEADD(m,1,'2012-01-12')), DATEADD(m,13,'2012-01-12')) expirationDate
步骤1:在下一年的同一个月创建一个新日期,但在1号

步骤2:添加一个月


第三步:减去一天

EDIT:dang,它不加一年,我在下面更新了我的答案
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)))