您的位置:首页 > 数据库

SQL Server比较Date和Datetime数据时一个有趣的问题

2011-12-09 17:45 465 查看
看到有人贴出这样的问题:/article/5908638.html

感觉SQL Server在比较Date和Datetime这两种类型的时候,是将Date类型强制转换成了'2011-11-04 00:00:00.000'的Datetime进行比较,因此Date类型的'2011-11-04'和Date类型的'2011-11-04 23:59:59'一样大,但是Date类型的'2011-11-04'比Datetime类型的'2011-11-04 23:59:59'小

验证代码如下:

DECLARE @EndTime datetime
SET @EndTime='2011-11-04 23:59:59'
--SET @EndTime='2011-11-05'
DECLARE @CreateTime DATE
SET @CreateTime='2011-11-04'

IF @CreateTime<@EndTime
PRINT '@CreateTime<@EndTime'

IF @CreateTime<CONVERT(DATE,@EndTime)
PRINT '@CreateTime<CONVERT(DATE,@EndTime)'
ELSE IF @CreateTime=CONVERT(DATE,@EndTime)
PRINT '@CreateTime=CONVERT(DATE,@EndTime)'


个人觉得取时间段还是避免使用'2011-11-04 23:59:59'这样的时间,毕竟数据的时间还存在位于'2011-11-04 23:59:59.001'和'2011-11-04 23:59:59.997'之间的可能性。另外,各系统间和输入输出参数的数据类型尽量都保持一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐