我从前端得到日期参数值为'4-1-2009'。现在我想成为
在我的存储过程中'4-1-2010'。我在尝试如下。
ALTER PROCEDURE [dbo].[SP_EMP]
@STARTDATE DATETIME,
@ENDDATE DATETIME,
@STARTDATE2 DATETIME,
SET @STARTDATE2=DATEADD(yy, 1, @STARTDATE)
AS
BEGIN
SELECT EMPNAME FROM EMP WHERE JOINDATE>@STARTDATE2
----// SOME JOINS //----
END
我怎样才能做到这一点?请告诉我。
此致,N.SRIRAM
dateAdd函数是解决方案
SELECT DATEADD(year, 1, '4-1-2009') FROM UserLog
要么
Declare @E DATETIME,
SET @E=Select DATEADD(year, 1, '4-1-2009')
select dateadd(yy, 1, '20 Jan 2011')
我和提问的人有同样的问题。其他答案没有解决他的问题。
他所拥有的是变量,需要通过递增来改变它们中的日期。你走在正确的轨道上。
这是一个可以复制并粘贴到SSMS中的演示,它可以正常工作。
/*First declare your varabiles, you can use date or datetime, or even var only after using dateadd the format will change */
Declare @CTCStartDate date
Declare @CTCEndDate date
/* Now define your initial values, you may want to have these by a SSRS report or other program */
Set @CTCStartDate = '2015-01-01'
Set @CTCEndDate = '2015-11-11'
/* See the inital values */
Select @CTCStartDate as InitialStartDT, @CTCEndDate as InitialEndDT
/* Increment the year by the number you desire, even this can be a variable */
Set @CTCEndDate = DATEADD(YYYY,1, @CTCEndDate)
Set @CTCStartDate = DATEADD(YYYY,1, @CTCStartDate)
/* See the final results */
Select @CTCStartDate as StartDT, @CTCEndDate as EndDT
想象一下,如果您只想在显示时更改它,您希望将您网站上的所有文章增加一年;
SELECT DATEADD(year, 1, CreationDateTime) AS CreationDateTime
FROM [dbo].[Articles]
您可以放置'2009/04/01'而不是CreationDateTime。如果您还想更改数据库中的值:
UPDATE [dbo].[Articles] SET CreationDateTime = DATEADD(year, 1, CreationDateTime)
仅供参考,如果你想减少年份它是这样的:DATEADD(year, -1, CreationDateTime)
阅读更多here