开发同事有一个脚本报错,很简单,简写如下:

SELECT   COUNT(*)
FROM    Logs t1 with(nolock)
WHERE   DATEDIFF(s, '2016-08-18 17:06:35', t1.insertTime) < 0

执行后出错!

Msg 535, Level 16, State 0, Line 1
The datediff function resulted in an overflow. 
The number of dateparts separating two date/time instances is too large. 
Try to use datediff with a less precise datepart.

datediff 函数计算溢出!难道 datediff  计算出来的的秒数超出了范围?

果然,官方文档如下:(DATEDIFF (Transact-SQL))

如果返回值超出 int 的范围(-2,147,483,648 到 +2,147,483,647),则会返回一个错误。 对于 millisecond,startdate 与enddate 之间的最大差值为 24 天 20 小时 31 分钟 23.647 秒。 对于 second,最大差值为 68 年。

查看数据库,竟然有7行时间为: 2099-08-10 11:33:37.367 ,这样转换肯定出错了,错误如上一样。可以试试。

select DATEDIFF(s, '2000-01-01 00:00:00', '2068-01-19 04:00:00')
select DATEDIFF(s, '2000-01-01 00:00:00', '2068-01-19 03:00:00') --2147482800

相差秒数为 2147482800,为 整型 int 的范围内。

也可以看看 datediff 返回的类型是什么:整型

SELECT SQL_VARIANT_PROPERTY(DATEDIFF(s, '2000-01-01 00:00:00', '2068-01-19 03:00:00'),'BaseType')

所以,数据库存在了日期较大的值,这几行日期字段原本也是错误的数据,应该把日期改掉。还有就是语句写法也有问题,不应该这么写,应改成下面的写法更规范,否则即使有索引也不能使用!

SELECT   COUNT(*)
FROM    Logs t1 with(nolock)
WHERE    t1.insertTime < '2016-08-18 17:06:35'

SQLServer The datediff function resulted in an overflow相关推荐

  1. C#在Oralce环境执行查询时报Arithmetic operation resulted in an overflow

    问题描述:C#代码在Oralce环境执行分组求和的Sql时报错,提示"Arithmetic operation resulted in an overflow",即算术运算导致溢出 ...

  2. Pgsql实现SQLServer的datediff函数

    SqlSever的datediff函数,在Pgsql可能往往想到用date_part来实现,但这是有差异的,如: SQLServer:select datediff(d,'2020-02-24 20: ...

  3. sqlserver根据DATEDIFF()函数计算年龄、月龄、天数

    首先我们先来了解一下DATEDIFF()函数 DATEDIFF() 函数返回两个日期之间的时间. 语法:DATEDIFF(datepart,startdate,enddate) 比如我们想要计算年龄 ...

  4. mysql datediff函数怎么用_SQL中datediff函数怎么用?(代码详解)

    在SQL Server中,可以使用T-SQL DATEDIFF()函数返回两个日期之间的差异.它适用于任何可以解析为time.date.smalldatetime.datetime.datetime2 ...

  5. php环境搭建sqlserver,ThinkPHP5.0/5.1对接SQLServer数据库(宝塔环境)

    SQLServer实际上是mssql,想要使用thinkphp的Db对象操作数据库前必须要在服务器上安装对应的扩展. 宝塔面板的PHP安装路径为/www/server/php/ 且支持多个PHP版本共 ...

  6. mysql sql语句 datediff_MySQL数据库之MySQL DATEDIFF 函数

    本文主要向大家介绍了MySQL数据库之MySQL DATEDIFF 函数 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. Summary: in this tutorial, y ...

  7. 什么是SQL Server DATEDIFF()方法?

    Hey, folks! In this article, we will be focusing on SQL Server DATEDIFF() function in detail. 嘿伙计! 在 ...

  8. SQL DATEDIFF函数

    目录 描述 语法 SQL DATEDIFF使用说明 SQL DATEDIFF示例 描述 使用SQL DATEDIFF根据指定的日期部分返回两个日期之间的差异.该DATDIFF函数将此差值作为整数值返回 ...

  9. datediff oracle11,数据库中datediff函数用法

    数据库中datediff函数怎么用 如:SELECT DATEDIFF(D,'2015-6-16','2015-6-20') 返回结果表示 两个日期间隔的天数 sql数据库中的datediff函数是什 ...

最新文章

  1. R语言dplyr包将dataframe中的NA值替换(replace)为0实战:所有NA值替换(replace)为0、具体列的NA值替换(replace)为0、若干列的NA值替换(replace)为0
  2. python type创建类_Python基于内置函数type创建新类型
  3. NOIP2002 均分纸牌
  4. 20nian5yue最热门的Python开源项目
  5. css之object-fit
  6. .Net - Lambda 表达式
  7. 如果Laravel 报错 file_put_contents(): failed to open stream
  8. C++中的wchar_t(转)
  9. React Native 实现FlatList的下拉刷新上拉加载
  10. Windows Phone 8开发环境搭建介绍
  11. java项目:永和大王项目_Java项目:书评
  12. iis 日志 post数据_云原生日志的趋势(1):logscape和logiq
  13. php 对接 北向数据接口 socket
  14. 2017-2018-1 20155320 实验三——实时系统
  15. Divergent series
  16. 黑苹果cpu架构???_自研桌面CPU,苹果对英特尔发“分手信”
  17. Linux服务简单优化
  18. SQL Server2016安装教程
  19. 高精度地图技术与展望
  20. 执行mvn clean报错Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could

热门文章

  1. java web 上传图片漏洞_Web安全:文件上传漏洞
  2. unity开发xbox手柄 驱动坑
  3. 爬取公众号的文章,同时处理图片不显示问题(JAVA)
  4. 荷塘趣事计算机作业,【《荷塘趣事》摄影图片】生态摄影_人称开哥_太平洋电脑网摄影部落...
  5. 消费新品周报 | AWE海尔推出无尘洗衣机;卡西欧F1红牛车队合作新款运动手表...
  6. linux中关于磁盘配额的描述,Linux中的磁盘配额
  7. 快速集成百度定位功能
  8. STM32遥控小车下位机及硬件连接部分(Keil MDK5平台的C++编程)
  9. VB中关于UBOUND和LBOUND含义
  10. WKWebView设置UserAgent踩坑