Sql 不带DateAdd或DateDiff修改日期

Sql 不带DateAdd或DateDiff修改日期,sql,sql-server,tsql,Sql,Sql Server,Tsql,是否可以在不必使用DateAdd或计算日期差的情况下修改日期的日期部分 SET @ReturnDate = '5/16/2012' SET @ModifyDay = 20 仅将16修改为20 结果应为2012年5月20日 原因是我正在将vb代码转换为存储过程: Dim InvDate_Day_of_Month As Integer = CInt(Day(InvDate)) PaymentDate = DateAdd(DateInterval.Month, 1, InvDate

是否可以在不必使用DateAdd或计算日期差的情况下修改日期的日期部分

SET @ReturnDate = '5/16/2012'

SET @ModifyDay = 20
仅将
16
修改为
20

结果应为2012年5月20日

原因是我正在将vb代码转换为存储过程:

    Dim InvDate_Day_of_Month As Integer = CInt(Day(InvDate))
    PaymentDate = DateAdd(DateInterval.Month, 1, InvDate)
    PaymentDate = New Date(PaymentDate.Year, PaymentDate.Month, DayofTheMonth)

如果您只是想在日期上增加4天,您可以直接在日期上增加4天:

DECLARE @ReturnDate DATETIME;
SET @ReturnDate = '5/16/2012'

SELECT @ReturnDate, @ReturnDate + 4
这选择了
2012-05-1600:00.000和2012-05-2000:00:00.000

如果您只想在日期上加4天,您可以在日期上加4天:

DECLARE @ReturnDate DATETIME;
SET @ReturnDate = '5/16/2012'

SELECT @ReturnDate, @ReturnDate + 4
这选择了
2012-05-1600:00.000和2012-05-2000:00:00.000

如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以精确地格式化和语法突出显示它!您对
DATEADD
有什么看法?其他数据库提供了日期构造函数函数。在SQL Server中,最好的方法是使用字符串函数,例如:cast(替换(@ReturnDate,/16/,“/20/”)作为日期)。我使用vb代码,只是posted,但是为什么不使用
DATEADD
DATEDIFF
?如果发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击“代码示例”编辑器工具栏上的按钮(
{}
),可以很好地格式化和语法突出显示它!您对
DATEADD
有什么看法?其他数据库提供了日期构造函数函数。在SQL Server中,最好的方法是使用字符串函数,例如:cast(替换(@ReturnDate,/16/,“/20/”)作为日期)。我用vb代码代替,只是posted,但是为什么不使用
DATEADD
DATEDIFF