Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 哪个查询更适合获取日期+;23:59:59_Sql_Sql Server - Fatal编程技术网

Sql 哪个查询更适合获取日期+;23:59:59

Sql 哪个查询更适合获取日期+;23:59:59,sql,sql-server,Sql,Sql Server,结果 两者的结果相同,但性能更好两者都不是“更好”。在SQL中可以有多种表达方式。例如,以下是一些其他方法: 2019-09-22 23:59:59.000 2019-09-22 23:59:59.000 对于您的特定示例,第一个有三个函数调用,第二个有两个。这通常意味着第二个要快一点点。但是,编译器可能会预先计算这些值,所以这没有什么区别 更重要的是你为什么要这么做。我看到这种类型的计算用于支持带有日期时间值的之间的: select convert(datetime, '2020-09-22

结果

两者的结果相同,但性能更好

两者都不是“更好”。在SQL中可以有多种表达方式。例如,以下是一些其他方法:

2019-09-22 23:59:59.000
2019-09-22 23:59:59.000
对于您的特定示例,第一个有三个函数调用,第二个有两个。这通常意味着第二个要快一点点。但是,编译器可能会预先计算这些值,所以这没有什么区别

更重要的是你为什么要这么做。我看到这种类型的计算用于支持带有日期时间值的
之间的

select convert(datetime, '2020-09-22') + convert(datetime, '23:59:59')
select datetimefromparts(2020, 09, 22, 23, 59, 59, 0)
select convert(datetime, '2020-09-22' + ' 23:59:59')
如果这是你的意图,修正你的逻辑。上界最好是非包容的,因此您可以这样写:

where getdate() between startdt and enddt
其中getdate()>=startdt和getdate
然后,您可以使用“2019-06-23”作为结束日期,而不必担心“得到最后一秒”,也不必担心每天错过最后一秒的错误

Aaron Bertrand就日期/时间值在
之间使用
进行了广泛的讨论:

两者都不是“更好的”。在SQL中可以有多种表达方式。例如,以下是一些其他方法:

2019-09-22 23:59:59.000
2019-09-22 23:59:59.000
对于您的特定示例,第一个有三个函数调用,第二个有两个。这通常意味着第二个要快一点点。但是,编译器可能会预先计算这些值,所以这没有什么区别

更重要的是你为什么要这么做。我看到这种类型的计算用于支持带有日期时间值的
之间的

select convert(datetime, '2020-09-22') + convert(datetime, '23:59:59')
select datetimefromparts(2020, 09, 22, 23, 59, 59, 0)
select convert(datetime, '2020-09-22' + ' 23:59:59')
如果这是你的意图,修正你的逻辑。上界最好是非包容的,因此您可以这样写:

where getdate() between startdt and enddt
其中getdate()>=startdt和getdate
然后,您可以使用“2019-06-23”作为结束日期,而不必担心“得到最后一秒”,也不必担心每天错过最后一秒的错误


Aaron Bertrand就日期/时间值在
之间使用
进行了广泛的讨论:

我的原始日期类型是DATETIME@AkbarAsghari,我建议使用Gordon提到的包容性开始和独家技术,这样您就不会错过一天中最后一秒的分数秒数(例如,在“2019-09-22 23:59:59.003”和“2019-09-22 23:59:59.997”之间)。我的原始日期类型为DATETIME@AkbarAsghari,我建议使用Gordon提到的包容性启动和独家技术,这样您就不会错过一天中最后一秒的分数秒行(例如,在“2019-09-22 23:59:59.003”和“2019-09-22 23:59:59.997”之间).当我年轻得多的时候,我常常花上几天的时间研究做某事最有效的方法。但事实是,除非你做了十亿次,否则这不太可能产生任何影响。另一方面,让你的表达尽可能“可读”更为重要(对于我们人类).当我年轻得多的时候,我常常花上几天的时间研究做某事最有效的方法。但事实是,除非你做了十亿次,否则这不太可能产生任何影响。另一方面,让你的表达尽可能“可读”(对我们人类而言)更重要。