zoukankan      html  css  js  c++  java
  • 170406回顾-SQL Server的smalldatetime类型比较

    在比较SQL Server的类型为smalldatetime字段时出现下面的错误:将 expression 转换为数据类型 smalldatetime 时出现算术溢出错误

    正确的比较方法如下:将long型转换为时间格式的字符串,再与smalldatetime类型的字段比较

    SELECT * FROM tablename WHERE EditFlag > '2017/3/27 11:22:00' order by EditFlag

    尝试了使用SQL Server的内部函数将long转换后比较,但是失败了:

    sql1 = SELECT * FROM dbo.BC_patrolrecord WHERE EditFlag > date(149058492000) order by EditFlag

    根据下面链接中的内容再次进行了尝试:

    http://www.cnblogs.com/leoning/archive/2011/01/04/1925229.html

    将long除以1000、再除以60,将其转换为分钟数进行比较,也失败了:

    sql1 = SELECT * FROM dbo.BC_patrolrecord WHERE EditFlag > 149058492000/1000/60 order by EditFlag

    在SQL Server客户端工具中做了下面的尝试:看来还得想想怎么和数字比较

    select * from BC_patrolrecord where EditFlag > 149058492000; -- 失败

    select * from BC_patrolrecord where EditFlag > 149058492; -- 失败

    select * from BC_patrolrecord where EditFlag > 149058; -- 失败

    select * from BC_patrolrecord where EditFlag > 14905; -- 成功

    线索:“smalldatetime占4字节,精度1分钟,时间从1900.1.1到2079.6.6”有关系?

    每天1440分钟,从1900.1.1算起到现在大约有1440*365*116+1440*30*3+1440*7=X分钟,这个X远远大于149058了。

    下面是找到的另一篇文档,提到了一个convert函数:或可一试

    http://www.myexception.cn/sql-server/159157.html

  • 相关阅读:
    c++ stack 适配器
    错误记录
    css3动画,制作跑步运动,画笔画圆,之类的连贯性动作的方法
    关于$.cookie
    JavaScript中常见易犯的小错误
    关于内存泄漏
    Javascript的异步编程方法
    JavaScript中this关键词的四种指向
    javascript之回调函数小知识
    移动端的兼容性
  • 原文地址:https://www.cnblogs.com/luo630/p/6676795.html
Copyright © 2011-2022 走看看