比较 SQL Server 中的时间
在 SQL 查询中比较时间值时,将时间部分与日期隔离至关重要。由于性能较慢,不推荐使用 Convert(datetime, ...) 转换为字符串表示形式然后进行比较的给定方法。
更有效的方法是利用 SQL Server 的固有浮点表示形式日期。整数部分代表日期,小数部分代表时间。
declare @first datetime set @first = '2009-04-30 19:47:16.123' declare @second datetime set @second = '2009-04-10 19:47:16.123' select (cast(@first as float) - floor(cast(@first as float))) - (cast(@second as float) - floor(cast(@second as float))) as Difference
此方法减去日期的整数部分,只留下小数(时间)部分。得到的 Difference 代表时间差。
例如,使用以下方法在 SQL Server 中比较 '08:00:00' 和 '07:30:00':
declare @first datetime set @first = '08:00:00.000' declare @second datetime set @second = '07:30:00.000' select (cast(@first as float) - floor(cast(@first as float))) - (cast(@second as float) - floor(cast(@second as float))) as Difference
结果:
Difference ------------ 0.5
这确认 '08:00:00' 大于'07:30:00' 晚了 30 分钟。
以上是如何在SQL Server中高效比较时间值?的详细内容。更多信息请关注PHP中文网其他相关文章!