SQL Server错误 - 向“datetime”列添加值会导致溢出

时间:2016-09-16 20:44:44

标签: sql-server-2014

我正在使用SQL Server 2014.最后一行导致出现溢出错误。

为什么呢?

  DECLARE @CurrentDateTime  datetime
  DECLARE @PreviousYearDateTime  datetime
  DECLARE @ModifiedStartDateTime  datetime
  DECLARE @YearsYear   int = 2015

  SET @CurrentDateTime = '2016-08-29 19:13:30.840'      
  SET @PreviousYearDateTime = CONVERT(datetime, DATEADD(YEAR, -1, @CurrentDateTime))

  -- For the "startdate" - just use the previous "startdate".
  SET @ModifiedStartDateTime = @PreviousYearDateTime

  -- Set the 'year' to the year value.
  SET @ModifiedStartDateTime = DATEADD(YEAR, @YearsYear, DATEADD(YEAR, -DATEPART(YEAR, @ModifiedStartDateTime), @ModifiedStartDateTime))

2 个答案:

答案 0 :(得分:0)

您可以像这样更换年份:

SET @ModifiedStartDateTime = REPLACE(@ModifiedStartDateTime,DATEPART(YEAR,@ModifiedStartDateTime),@YearsYear)

但是,既然你设置了2015年的@ModifiedStartDateTime = @PreviousYearDateTime ......并且你将这一年改为2015年......你就没有做任何事情。尝试使用与2015年不同的内容@YearsYear

答案 1 :(得分:-1)

SQL Datetime

  

日期范围1753年1月1日至9999年12月31日

当您减去2015年时,您将在第0年

DateTime2

  

范围:0001-01-01至9999-12-31。
  公元1月1日至9月9日12月31日

how to solve 1753 year issue in sqlserver?

What is the significance of 1/1/1753 in SQL Server?