另类解读SQLServer中的DateTime数据类型

另类解读SQLServer中的DateTime数据类型,第1张

另类解读SQLServer中的DateTime数据类型,第2张

看到这个标题,你我可能都会笑。你会笑,因为你觉得这个东西太幼稚了,还需要标题?!我笑是因为我相信你看完之后会改变主意。

首先我引入一个问题:如何与DateTime类型的字段值进行相等比较?

其实这个问题看似简单,但存在以下问题:

1.一般来说,用户输入的日期值是yyyy/mm/dd,不带时、分、秒;

2.存储在数据库中的日期值是小时、分钟和秒。

所以我不得不假设,所谓两个日期相等是指年、月、日相等。

两种方法:

◆1.有了这样的假设,你我都会有这样的想法:只要把两个日期的年、月、日拿出来分别比较就可以了。三者相等(或者你可以做一个统一格式的字符串,比较一下)。

◆2.虽然上面的方法是可行的。但是你会发现你几乎把日期功能都用遍了!可以这样想:如果只指定日期,默认时间是12:00 AM(午夜)(来自:SQL Server联机帮助)。假设我们要检查的日期是2004年7月10日,我们真正想要的是00:00:00到23:59:59之间的日期。提起,我们会想到之间...还有!!就在2004年7月10日到2004年7月11日之间。具体来说:在cast(' 2004年7月10日'作为datetime)和dateadd (day,1,cast(' 2004年7月10日'作为datetime))之间。但是这种方法有一个小问题。它会在7/11点找东西,这个不应该算7/10。如果还想精益求精,只能用...> =...和...等于讨论完之后,再想想大于(或者小于)某个日期。自然,我们仍然可以使用between...并再次证明上述方法的通用性。

注意:通过上面的讨论,你必须明白,和之后的日期必须加一天,否则找不到结束日期。\

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 另类解读SQLServer中的DateTime数据类型

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情