读书人

“不要使用日期字段改用字符串char(

发布时间: 2012-03-02 14:40:29 作者: rapoo

“不要使用日期字段,改用字符串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层传递的过程中进行 "行级别 "过滤,那又会严重影响效率

现在我也很烦这事情

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

读书人网 >asp.net

热点推荐