• " somedate <= 200911 23:59.59.999 " 陷阱


    看到标题,相信很多有经验的开发人员,已经猜到是什么问题了。

    写在这里是希望给后来人一个提醒,并且也提醒自己应该如何正确的去认识任何一个数据类型。

    言归正传,用 " somedate <= 2009-1-1 23:59.59.999 " 作为查询条件,最终的结果是

    会把 somedate = 2009-1-2 00:00.00.000 的记录一起查出来。

    为什么呢?答案在联机丛书中一句不起眼的话:

    “日期和时间数据,从 1753 年 1 月 1 日到 9999 年 12 月 31 日,准确度为三百分之一秒或 3.33 毫秒。值被圆整到 .000、.003 或 .007 毫秒增量。”

    也就是说,我们使用datetime时,可以用到1毫秒级别,但是Sql Server看到的只精确到3.33毫秒。

    深层的原因有待研究,也许哪位大虾可帮忙解释一下。

    本人推荐的用法是 : somedate < 2009-1-2 00:00.00.000  这样能够正确的表达这句过滤条件的真正目的吧。

  • 相关阅读:
    xshell的安装及连接linux的使用方法
    linux中yum install 命令无效
    linux-centOS环境下安装jdk8
    centOS不显示ipv4地址的解决办法
    centOS开启和关闭防火墙
    java-分布式-索引
    java-网络通信-索引
    java-中间件
    java-框架-索引
    JVM-索引
  • 原文地址:https://www.cnblogs.com/Cheese_Ren/p/1370325.html
Copyright © 2020-2023  润新知