当前位置: 首页 > news >正文

将不确定变为确定~DateTime.MinValue和MaxValue引发的异常

回到目录

问题描述:

SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间

概念相关

.Net中的DateTime结构类中的MinValue和MaxValue有时会引发一个异常,那就是日期溢出的问题,您输入的日期必须介于 1753 年 1 月 1 日到 9999 年 12 月 31 日之间,而DateTime.MinValue实际上不是1753 年 1 月 1日,而是0000年1月1日,而数据库可以接收的日期时间最小值为1753/1/1,这时由于.net产生的DateTime.MinValue远远小于它,所以,它出现了日期溢出的问题。

解决问题

我们作一个测试:

   Console.Write(DateTime.MinValue);
    Console.Write(DateTime.MaxValue);

它的结果为:

所以,如果你在程序中,进行数据库查询时,需要对日期进行查询,如果希望给日期变量一个默认值,那不会使用DateTime.MinValue,而要使用SQL的数据结果中的MinValue,它位于System.Data.SqlTypes名称空间下,表示与SQLSERVER对应的数据类型,测试代码如下:

 Console.WriteLine(System.Data.SqlTypes.SqlDateTime.MinValue);
 Console.WriteLine(System.Data.SqlTypes.SqlDateTime.MaxValue);

它的结果为:

它在程序中的体现为:

     /// 用户列表
        /// </summary>
        /// <param name="username"></param>
        /// <param name="deptname"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public ActionResult Index(
            string username,
            string deptname,
            DateTime? startTime,
            DateTime? endTime,
            int? page)
        {

            UserManager userManager = new UserManager();
            ViewData["SiteMapID"] = 11;

            var specification = new UserSpecification(startTime, endTime, username, deptname);
            var model = userManager.GetWebManageUsers(specification, new PageParameters(page ?? 1, base.PageSize));
            model.AddParameters = new System.Collections.Specialized.NameValueCollection();
            model.AddParameters.Add("username", username);
            model.AddParameters.Add("deptname", deptname);
            model.AddParameters.Add("startTime", (startTime).ToString());
            model.AddParameters.Add("endTime", (endTime).ToString());

            if (Request.IsAjaxRequest())
                return PartialView("List", model);
            return View(model);
        }

在上面的代码中,我们的DateTime类型,由于与数据库查询相关,所以,可以使用SqlDateTime类型代替!

回到目录

转载于:https://www.cnblogs.com/lori/p/3186807.html

相关文章:

  • java文件操作源码
  • linux,windows 修改 网卡MTU 值
  • 测试程序运行耗时
  • [置顶] 使用严苛模式打破Android4.0以上平台应用中UI主线程的“独断专行”
  • 基于linux和虚拟化的禅道管理操作系统1.0发布了!
  • DataUml Design 教程2-实体建模
  • Spring3整合Hibernate4-我们到底能走多远系列(30)
  • 【连载】《linux入门很简单》电子版——作者:刘金鹏(1.4G大叔)
  • 为uBoot添加命令自动补全功能
  • span 右浮动折行 解决ie6/7中span右浮动折行问题
  • FOSRestBundle功能包:监听器支持
  • 获取CPU使用情况信息(转)
  • Centos上面用Shell脚本一键安装LNMP环境
  • CSS 选择器及各样式引用方式
  • 7_12_2013 E: Hard problem
  • [译]前端离线指南(上)
  • Docker下部署自己的LNMP工作环境
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Octave 入门
  • passportjs 源码分析
  • PHP CLI应用的调试原理
  • Promise面试题,控制异步流程
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Vue2.x学习三:事件处理生命周期钩子
  • 分布式事物理论与实践
  • 工程优化暨babel升级小记
  • 前端
  • 前端临床手札——文件上传
  • 如何进阶一名有竞争力的程序员?
  • 如何在 Tornado 中实现 Middleware
  • 深入浅出webpack学习(1)--核心概念
  • 手写双向链表LinkedList的几个常用功能
  • 说说我为什么看好Spring Cloud Alibaba
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​力扣解法汇总946-验证栈序列
  • ​用户画像从0到100的构建思路
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • (差分)胡桃爱原石
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转载)Linux网络编程入门
  • **PHP二维数组遍历时同时赋值
  • 、写入Shellcode到注册表上线
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net 路由处理厉害了
  • .NET 药厂业务系统 CPU爆高分析
  • .net反编译的九款神器
  • .sh 的运行
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @JsonSerialize注解的使用
  • @requestBody写与不写的情况
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [ 数据结构 - C++]红黑树RBTree
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell