当前位置: 代码迷 >> ASP.NET >> “不要使用日期字段,改用字符串char(19)替代”,不解,该怎么解决
  详细解决方案

“不要使用日期字段,改用字符串char(19)替代”,不解,该怎么解决

热度:7746   发布时间:2013-02-26 00:00:00.0
“不要使用日期字段,改用字符串char(19)替代”,不解
刚刚在网上看到一句话
“不要使用日期字段,改用字符串char(19)替代,如:2008-12-09   12:22:08。”

不太明白为什么?
请指点

------解决方案--------------------------------------------------------
把数据类型设置成日期是有很多不方便

典型的就是NULL

比如说审批的时候,刚发文还不知道啥时候会审批

NULL值要从界面传递到数据持久层,ORM不好处理
------解决方案--------------------------------------------------------
在SQL Server中,datetime是一个浮点数,其中小数点之前部分是天数,小数点后部分是毫秒数。可以想见,它比字符串要好很多,可以直接进行数学运算、排序等等。例如我们查询最近7天即将休假的员工,可以写:

declare @from datetime --明天开始计算
set @from=cast(cast(getdate() as int) as datetime)
select [工号] from [员工] where [休假起始日期] between @from and @from+6
------解决方案--------------------------------------------------------
用char统计分析会很不方便
------解决方案--------------------------------------------------------
问题在于

目前采用的整体框架,上层是不知道下层采用何种数据库的,是完全屏蔽数据库差异的

前台对实体中的Datetime赋值,是无法赋NULL值的,

只能搞个MAX VALUE或者MIN VALUE,然后在实体从数据持久层-> ORM层传递的过程中进行 "行级别 "过滤,那又会严重影响效率

现在我也很烦这事情

不太想把框架加入一些莫名其妙的规范来让它处理这些事情

  相关解决方案