sql-server - 日期变量的破折号和斜线之间的区别?
问题描述
数据库中可能还有其他我不知道的因素,但我的这个问题也是基于一位同事告诉我的。
在为日期声明和设置变量时,在性能方面使用破折号和斜杠(和 0)有什么区别?
DECLARE @START DATE
SET @START = '05-01-2020'
VS。
DECLARE @START DATE
SET @START = '5/1/2020'
使用第一个,我正在查看 5 分钟并计算返回的查询。当我记得我的同事告诉我使用 0 和破折号时,我尝试了第一种格式,我的查询在大约 2 分钟内完成。这是有原因的,还是数据库资源抽奖的运气?
解决方案
和之间的相似之处在于两者都是非 ISO、非标准、在 SQL Server(或大多数其他 SQL 数据库)中编写日期文字的方式。对于此示例日期,在 SQL Server 中编写日期文字的最佳方法是:05-01-2020
5/1/2020
20200501
这是一种 ISO 格式,无论服务器设置如何,它始终被解释为 2020 年 5 月 1 日。通常,在 SQL Server 中编写日期文字时应尝试使用这种格式。
关于性能,一旦日期文字被存储在 SQL Server 内部,使用什么字符串格式来获取它应该无关紧要。SQL Server 中的日期以二进制形式存储,性能不应依赖于填充数据的启动脚本。
推荐阅读
- perl - perl中的'Cwd'和'qw'是什么意思?
- bash - 脚本中没有输出为 stdout 和 stderr
- node.js - 如何将图像从前端(reactjs)传递到后端(nodejs)并将其上传到firebase存储?
- html - react-perfect-scrollbar - 不会为 div 持有手风琴更新
- typescript - Angular TSLint:即使出现错误也继续下一步
- flutter - Flutter Chopper 库缓存 http 响应
- python - 如何在单行中编写此 python 条件
- sql-server - SSRS 2017 报告通过 Intranet 连接加载缓慢,通过 Web 链接通过 Internet 连接立即加载
- date - 在 ElasticSearch 中按日期和按天写入次数排序(二次排序)
- ios - 多行截断中间不能快速工作