SmallDateTime时间范围检查
SamllDataTime是SQL Server中的一种表达时间的类型, 精度不高但是省空间,具体的细节就查看一下MSDN的文档吧. http://msdn.microsoft.com/zh-cn/library/ms182418.aspx
这里着重看一下它的时间范围从1900-01-01 到 2079-06-06.
首先展示一段系统中的代码, 你能发现其中的问题么?
SqlCommand command = new SqlCommand(sqlTemplate, conn);
//....
command.Parameters.Add(new SqlParameter("@LogClientTime", SqlDbType.SmallDate;
command.Parameters.Add(new SqlParameter("@LogServerTime", SqlDbType.SmallDate;
//....
foreach (var hourlySummaryData in _summaryData)
{
//....
command.Parameters["@LogClientTime"].Value =
hourlySummaryData.LogClientTime < SqlDateTime.MinValue ? SqlDateTime.MinValue : hourlySumma.Value.LogClientTime;
command.Parameters["@LogServerTime"].Value =
hourlySummaryData.LogServerTime < SqlDateTime.MinValue ? SqlDateTime.MinValue : hourlySumma.Value.LogServerTime;
//....
command.ExecuteNonQuery();
}
系统中的时间未检查hourlySummaryData.LogClientTime的上限是不, 的确是个bug. 但是这不是我想说,这里还有一个bug.
SqlDateTime.MinValue的值是1753/1/1 0:00:00. 知道问题出在哪里了吧.
.NET BCL中并没有任何一个公共静态字段时间是1900/1/1 (私有的还是有的, 比如SqlDateTime中的SQLBaseDate字段.)
所以使用的时候一定要特别的注意, 如果数据库中使用了SmallDateTime那么范围检查一定要自己手写一下. SqlDateTime.MinValue跟MaxValue不是给SmallDateTime用的, 是datetime的范围检查(1753 年 1 月 1 日到 9999 年 12 月 31 日).
SmallDateTime时间范围检查的更多相关文章
- (转)Sql日期时间格式转换
sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...
- SQL Server中smalldatetime的日期范围为何是[1900-01-01,2079-06-06]
本文目录列表: 1.SQL Server中的基准日期 2.smalldatetime的日期范围 3.smalldatetime的日期范围和无符号2字节整数的关系 4.总结语 5.参考清单列表 SQ ...
- SQL Server 日期和时间函数
http://www.cnblogs.com/adandelion/archive/2006/11/08/554312.html 1.常用日期方法(下面的GetDate() = '2006-11-08 ...
- Sql日期时间格式转换
sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...
- SQL Server的日期和时间类型
Sql Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1,秒的精度是指使用多少位小数表示秒 DateTime数据类型秒的精度是3,D ...
- SQL Server时间粒度系列----第1节时间粒度概述
本文目录列表: 1.什么是时间粒度?2.SQL Server提供的时间粒度3.SQL Server时间粒度代码演示 4.SQL Server基准日期 5.总结语6.参考清单列表 什么是时间粒度 ...
- SQL Server时间粒度系列----第2节日期、周时间粒度详解
本文目录列表: 1.从MySQL提供的TO_DAYS和FROM_DAYS这对函数说起2.SQL Server日期时间粒度3.SQL Server周有关时间粒度 4.总结语 5.参考清单列表 从My ...
- 数据库开发基础-SQl Server 聚合函数、数学函数、字符串函数、时间日期函数
SQL 拥有很多可用于计数和计算的内建函数. 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种.函 ...
- Sql日期时间格式转换(转)
原文出自:http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599690.html sql server2000中使用convert来取得dat ...
随机推荐
- windows ODBC数据源里没有Oracle的驱动程序
windows ODBC数据源里没有Oracle的驱动程序 直接在“控制面板---管理工具----数据源(ODBC)” 打开数据源配置,发现只有SQLServer的驱动,其他的都没有了. ...
- apache开源项目--mina
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
- poj 3694 Network
题意: 添加每条新连接后网络中桥的数目// 超时 先放着了 ,下次改//早上这代码超时了 下午改了,代码在下面#include <iostream> #include <algori ...
- 【Unity3D】Unity自带组件—完成第一人称人物控制
1.导入unity自带的Character Controllers包 2.可以看到First Person Controller组件的构成 Mouse Look() : 随鼠标的移动而使所属物体发生旋 ...
- 锋利的jQuery读书笔记---jQuery中操作DOM
一般来说,DOM的操作分为3个方面,即DOM Core.HTML-DOM和CSS-DOM jQuery中的DOM操作主要包括以下种类: 查找节点 查找元素节点 查找属性节点 创建节点 创建元素节点 创 ...
- group by调优的一些测试
表结构信息: mysql> show create table tb\G*************************** 1. row ************************** ...
- 仿网易新闻客户端头条ViewPager嵌套实例
要点: 1.重写组件public boolean onInterceptTouchEvent(MotionEvent event)方法 2.正确使用requestDisallowInterceptTo ...
- C语言相关图书推荐
C Primer Plus(第5版 中文版) 作 者 [美] 普拉塔(Prata S.) 著:云巅工作室 编 出 版 社 人民邮电出版社 出版时间 2005-02-01 版 次 1 ...
- Java-note-输入流
java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象.常用的类有BufferedReader,Scanner.实例程序:一,利用 Scanner 实现从键盘读入integer ...
- Google App Engine Deployment 相关问题
1.GAE instance上传成功之后可以正常运行的情况下.在Google账户中“关联的应用和网站”,撤销Google App Engine appcfg对Google账户的访问权限. 再次上传时, ...