En el MSDN
se dice claramente que:"Agregar un valor a una columna 'datetime' causó un desbordamiento."
The date argument cannot be incremented to a value outside the range of its data type. In the following statements, the number value that is added to the date value exceeds the range of the date data type. The following error message is returned: "Adding a value to a 'datetime' column caused overflow."
Y el ejemplo:
SELECT DATEADD(year,2147483647, '2006-07-31');
SELECT DATEADD(year,-2147483647, '2006-07-31');
que provoca el error:
"Adding a value to a 'datetime' column caused overflow."
Esto parece correcto. Pero ¿por qué me sale el mismo error al ejecutar esta sentencia SQL:
SELECT DATEDIFF(YY,'1013-12-12',DATEADD(YY,-300,getdate()))
más específica y única:
SELECT DATEADD(YY,-300,getdate())
El 'datetime' mínimo es 1753 [porque ese fue el año después de que Gran Bretaña adoptó el Calendario Gregoriano] (http://stackoverflow.com/questions/3310569/what-is-the-significance-of-1-1- 1753-in-sql-server/3310588 # 3310588) ¿En qué versión de SQL Server estás? –
@Joro - Bien 'SELECCIONAR DATEADD (YY, -300, elenco (getdate() como datetime2))' funcionará para usted en ese momento. –
@MartinSmith Sí, tienes razón. He comprobado esto y las fechas de soporte del formato 'datetime2' y 'datetimeoffset' desde enero de 1,0001 hasta el 31 de diciembre de 1999. Las sentencias SQL hasta ahora significan que el tipo predeterminado de la función getdate() es 'datetime' y por qué si Se dice que 'datetime' y 'smalldatetime' se deprecian. – gotqn