加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

在SQL Server中无需时刻较量日期的最佳要领

发布时间:2021-03-14 20:37:48 所属栏目:编程 来源:网络整理
导读:select * from sampleTable where CONVERT(VARCHAR(20),DateCreated,101) = CONVERT(VARCHAR(20),CAST('Feb 15 2012 7:00:00:000PM' AS DATETIME),101) 我想没偶然刻较量日期 以上查询还可以吗?或你提议的其他更好的办理方案 我正在行使SQL Server 2005 在

select * from sampleTable 
where CONVERT(VARCHAR(20),DateCreated,101) 
=     CONVERT(VARCHAR(20),CAST('Feb 15 2012  7:00:00:000PM' AS DATETIME),101)

我想没偶然刻较量日期

以上查询还可以吗?或你提议的其他更好的办理方案

>我正在行使SQL Server 2005
>在处事器上以UTC名目生涯的日期
>针对此数据的用户属于差异的时区

办理要领

不要行使转换 – 无缘无端地涉及字符串.一个能力是日期时刻现实上是一个数字,而日期是整数部门(时刻是小数部门);因此,这一天是代价的FLOOR:这只是数学,而不是字符串 – 更快
declare @when datetime = GETUTCDATE()
select @when // date + time
declare @day datetime = CAST(FLOOR(CAST(@when as float)) as datetime)
select @day // date only

在您的环境下,无需转换回日期时刻;并行使范畴应承最有用的较量(出格是假如索引):

declare @when datetime = 'Feb 15 2012  7:00:00:000PM'
declare @min datetime = FLOOR(CAST(@when as float))
declare @max datetime = DATEADD(day,1,@min)

select * from sampleTable where DateCreated >= @min and DateCreated < @max

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读