Sql 哪个查询更适合获取日期+;23:59:59
结果 两者的结果相同,但性能更好两者都不是“更好”。在SQL中可以有多种表达方式。例如,以下是一些其他方法: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
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”之间).当我年轻得多的时候,我常常花上几天的时间研究做某事最有效的方法。但事实是,除非你做了十亿次,否则这不太可能产生任何影响。另一方面,让你的表达尽可能“可读”更为重要(对于我们人类).当我年轻得多的时候,我常常花上几天的时间研究做某事最有效的方法。但事实是,除非你做了十亿次,否则这不太可能产生任何影响。另一方面,让你的表达尽可能“可读”(对我们人类而言)更重要。