MSSQL日期时间执行效率

lkh42002 2006-10-24 09:35:10
MSSQL查询语句对时间进行判断时有什么方法能提高效率呢?
select * from tbl where time1-time2>0.5(time1,time2为datetime格式)
请高手解释下这句话的意思,另外在SQL内部,日期时间的存储格式是怎样的?是不是类似MYSQL?
...全文
365 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lkh42002 2006-10-24
  • 打赏
  • 举报
回复
to i9988
" 最好不要在索引字段用函数 ",呵呵,第一次听说,不要见怪,能不能进一步解释下?
dulei115 2006-10-24
  • 打赏
  • 举报
回复
Microsoft SQL Server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 年 1 月 1 日的 datetime 值。另外一个 4 字节存储以午夜后毫秒数所代表的每天的时间。

smalldatetime 数据类型存储日期和每天的时间,但精确度低于 datetime。SQL Server 将 smalldatetime 的值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。日期范围从1900 年 1 月 1 日到 2079 年 6 月 6 日,精确到分钟。
i9988 2006-10-24
  • 打赏
  • 举报
回复
以上改变假设time1有索引,如果time2有索引

select * from tbl where time1-time2>0.5
--〉
select * from tbl where time1-0.5>time2
--〉
select * from tbl where time2<time1-0.5
--〉
select * from tbl where time2<dateadd(hour,-12,time1)

希望楼主明白我的意思

i9988 2006-10-24
  • 打赏
  • 举报
回复
如果要讨论效率,就最好不要在索引字段用函数

select * from tbl where time1-time2>0.5
--〉
select * from tbl where time1>time2+0.5
--〉
select * from tbl where time1>dateadd(hour,12,time2)





lkh42002 2006-10-24
  • 打赏
  • 举报
回复
用datediff()在数据达到数百万条的时候速度比较慢.
dawugui 2006-10-24
  • 打赏
  • 举报
回复
日期时间的存储格式?
主要是显示的格式吧.
使用cast,convert看看.
子陌红尘 2006-10-24
  • 打赏
  • 举报
回复
在SQL Server中,可以使用datediff()函数来比较日期。
子陌红尘 2006-10-24
  • 打赏
  • 举报
回复
declare @date1 datetime,@date2 datetime
set @date1=getdate()
set @date2=dateadd(hh,12,getdate())

select cast(@date2-@date1 as numeric(10,8)) as [Days]

/*
Days
------------
.50000000
*/
子陌红尘 2006-10-24
  • 打赏
  • 举报
回复
两个日期相减,得到的是值是天数,楼主的SQL即查出time1与time2的时间差在半天以上的数据。
九斤半 2006-10-24
  • 打赏
  • 举报
回复
select * from tbl where time1-time2>0.5
===================
应该用DATEDIFF吧~~~

SELECT * FROM TBL WHERE DATEDIFF(DATEPART,TIME1,TIME2)>0.5
i9988 2006-10-24
  • 打赏
  • 举报
回复
楼上解释了

加个“最好”是因为有些功能没法避免使用函数
wcmj 2006-10-24
  • 打赏
  • 举报
回复
" 最好不要在索引字段用函数 "

意思是说,用了有可能会破坏索引,达不到索引的效果

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧