如何在SQL Server中使用SQL脚本添加一年的日期?

问题描述 投票:9回答:4

我从前端得到日期参数值为'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

sql-server-2005
4个回答
12
投票

dateAdd函数是解决方案

SELECT  DATEADD(year, 1, '4-1-2009') FROM  UserLog

要么

Declare @E DATETIME,

SET @E=Select DATEADD(year, 1, '4-1-2009')

3
投票
select dateadd(yy, 1, '20 Jan 2011')

0
投票

我和提问的人有同样的问题。其他答案没有解决他的问题。

他所拥有的是变量,需要通过递增来改变它们中的日期。你走在正确的轨道上。

这是一个可以复制并粘贴到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

0
投票

想象一下,如果您只想在显示时更改它,您希望将您网站上的所有文章增加一年;

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

© www.soinside.com 2019 - 2024. All rights reserved.