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

  • 相关阅读:
    python管理包(模块和包的应用)
    简单运行 Jupyter Notebook
    Linux出现“FirewallD is not running”解决办法
    Mindjet MindManager2020切换中文界面的教程
    idea 快捷键汇总
    南怀瑾经典语录
    CentOS 7 安装SonarQube 8.3版本
    Jenkins插件开发完全示例
    Jenkins在Pod中实现Docker in Docker并用kubectl进行部署
    Jenkins的kubernetes-plugin使用方法
  • 原文地址:https://www.cnblogs.com/luo630/p/6676795.html
Copyright © 2011-2022 走看看