在SQL Server中无需时间比较日期的最佳方法
发布时间:2021-03-15 17:45:53 所属栏目:MsSql教程 来源:网络整理
导读: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 解决方法不要使用转换 – 无缘无故地涉及字符串.一个技巧是日期时间实际上是一个数字,而日期是整数部分(时间是小数部分);因此,这一天是价值的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 (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |