当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 另类解读SQL Server中的DateTime数据类型

MSSQL
SQL Server 2005返回刚刚插入的数据条目id值
SQL Server 2000的视图中必须小心使用*符号
SQL Server 2005 SSIS技巧:动态目的文件名
SQL 2005 sa islock用户不能正常登录的现象
讲解无法打开用户默认数据库的解决方法
SQL Server中如何快速获取表的记录总数
SQL Server数据库简体繁体数据混用的问题
讲解SQL Server海量数据导入的最快方法
通向MySQL神秘王国的图形化之路
如何配置一个安全稳定的SQL Server数据库
SQL Server取得网站路径的几种方法及比较
一些文档中没有介绍的SQL Server DBCC命令
讲解SQL Server危险扩展存储删除和恢复
详细讲解删除SQL Server日志的具体方法
SQL查询效率:100w数据查询只需要1秒钟
SQL Server中多行多列连接成为单行单列
SQL Server 2000数据库FOR XML查询概述
带你深入了解数据库设计中的英文术语表
实例讲解实现SQL下的字符串拆分具体方法
通过作业调度建立SQL Server的自动备份

MSSQL 中的 另类解读SQL Server中的DateTime数据类型


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 66 ::
收藏到网摘: n/a

看到这个标题,你我可能都笑了。你会笑,因为你以为这个东西太小儿科了,还用得着做一个标题?!我会笑,是因为我确信你看完后会改变你的想法。

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

其实这个问题看起来容易,但有下面的问题存在:

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

2、数据库中存储的日期值是带时、分、秒的。

所以我必须假定:我们所谓的两个日期相等就是年、月、日相等。

两种方法:

◆1、有了这样的假定,你我都会有这样的想法:把两个日期的年、月、日取出来分别比较就行了,三者相等即可(也可按统一格式做成一个串再比较)。

◆2、上面的方法虽然可行。但你会发现几乎把日期函数用了个遍!不妨按下面的思路想一下:如果只指定日期,则时间默认为 12:00 AM(午夜)(取自:SQL Server联机帮助)。假定我们要查的日期是2004/7/10,则其实我们想要的就是这一天的00:00:00至23:59:59之间的。提到之间,我们就会想到between...and!!只要 between 2004/7/10 and 2004/7/11 即可了。具体地说:between Cast('2004-7-10' as DateTime) and dateadd(day, 1, Cast('2004-7-10' as DateTime))。但这个方法有一个小小问题,它会把7/11 0点的东西也找到,而这其实不应算做7/10的。如果你还想精益求精的话,就只能用...>=... and ...<... 了。(一般情况下没有必要)

等于讨论完后,再想想大于(或小于)某个日期,我们自然可以还用 between ... and 的,再一次论证上面方法的通用性。

注意:有了上面的讨论,你一定明白了,and 后的日期一定要加一天,否则结束日期就不会查到了。