首页 > 解决方案 > 日期变量的破折号和斜线之间的区别?

问题描述

数据库中可能还有其他我不知道的因素,但我的这个问题也是基于一位同事告诉我的。

在为日期声明和设置变量时,在性能方面使用破折号和斜杠(和 0)有什么区别?

DECLARE @START DATE

SET @START = '05-01-2020'

VS。

DECLARE @START DATE

SET @START = '5/1/2020'

使用第一个,我正在查看 5 分钟并计算返回的查询。当我记得我的同事告诉我使用 0 和破折号时,我尝试了第一种格式,我的查询在大约 2 分钟内完成。这是有原因的,还是数据库资源抽奖的运气?

标签: sql-server

解决方案


和之间的相似之处在于两者都是非 ISO、非标准、在 SQL Server(或大多数其他 SQL 数据库)中编写日期文字的方式。对于此示例日期,在 SQL Server 中编写日期文字的最佳方法是:05-01-20205/1/2020

20200501

这是一种 ISO 格式,无论服务器设置如何,它始终被解释为 2020 年 5 月 1 日。通常,在 SQL Server 中编写日期文字时应尝试使用这种格式。

关于性能,一旦日期文字被存储在 SQL Server 内部,使用什么字符串格式来获取它应该无关紧要。SQL Server 中的日期以二进制形式存储,性能不应依赖于填充数据的启动脚本。


推荐阅读