向列 'datetime' 添加值时导致溢出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向列 'datetime' 添加值时导致溢出相关的知识,希望对你有一定的参考价值。

例子:select datediff(day,getdate(),dateadd(day,364,date)) as tt from northwindow where datediff(day,getdate(),dateadd(day,364,date))>=10,在数据库中,data列包含了日期‘9999-12-31’,但是后来我在查询条件改成“where datapart(yyyy,date)!='9999' and datediff(day,getdate(),dateadd(day,364,date))>=10”后运行,系统仍是报错——向列 'datetime' 添加值时导致溢出?
后来在条件语句中增加了一个排序(以tt为排序字段)后,这个查询语句又能正常运行?
这两点我实在想不通,请各位大大指点。。。

你可以先把数据中9999-12-31 这样的数据排除
再搞
dateadd

9999-12-31 + 364天 当然会溢出
参考技术A 为什么要包含这种 9999-12-31的日期呢?

以上是关于向列 'datetime' 添加值时导致溢出的主要内容,如果未能解决你的问题,请参考以下文章

MySql要怎么插入DateTime型的数据?

在配置单元中创建表时向列添加默认值

将 1 天添加到 DATETIME 格式值

MySQL中datetime和timestamp的区别

如何使用awk根据数值范围向列添加特定值

MySql5.7 datetime 默认值为‘0000-00-00 00:00:00'值无法创建问题解决