我可能还没有意识到数据库中的其他因素,但是我也将这个问题基于一个同事告诉我的事情。
在声明和设置日期变量时,从性能角度来看,使用破折号和斜杠(以及0)有什么区别?
DECLARE @START DATE
SET @START = '05-01-2020'
VS。
DECLARE @START DATE
SET @START = '5/1/2020'
使用第一个,我看了5分钟,然后数着要返回的查询。当我记得我的同事告诉我有关使用0和破折号的信息时,我随后尝试了第一种格式,并且查询在大约2分钟内完成。这是有原因的,还是DB资源吸引了运气?
答案 0 :(得分:0)
05-01-2020
和5/1/2020
之间的相似性是它们都是非ISO,非标准的SQL Server(或大多数其他SQL数据库)中的日期文字写入方式。对于此示例日期,在SQL Server中编写日期文字的最佳方法是:
20200501
这是一种ISO格式,无论服务器设置如何,始终将其解释为2020年5月1日。通常,在SQL Server中写日期文字时应尝试使用这种格式。
关于性能,将日期文字存储在SQL Server内部之后,使用哪种字符串格式将其存储在那里都无关紧要。 SQL Server中的日期以二进制形式存储,并且性能不应取决于起始脚本来填充数据。