因此,考虑到每次我寻找SQL查询返回的第一天,我得到这个..Stackoverflow大答案
SELECT
DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1) AS EndOfYear使用下面的工具有什么问题吗?
SELECT CONVERT(DATE,CONVERT(CHAR(4), Year(Getdate())) + '0101')就我个人而言,我觉得这个更容易立即理解。
谢谢!
发布于 2016-01-08 14:47:01
这取决于你所说的“错误”是什么意思。
另一种方法可能更快,因为它将日期保持在它们的本机格式中,这实际上是Server中的数字数据,而SQL Server处理数字的速度通常比字符串快。此外,还有将日期转换为字符串和返回的开销。
但是这种性能差异是非常小的,所以这取决于您是否希望拥有更多的性能,还是更易于阅读和理解的代码。
发布于 2016-01-08 14:46:52
如果您想在处理字符串上花费几个额外的CPU周期,那么没有什么问题。
我看到了使用日历表的巨大好处。
在这方面有很多例子,您可以找到一个这里。
发布于 2016-01-08 15:33:35
更容易理解?这不是评论的目的吗?
在我看来,对数据库做的最重要的事情就是确保数据是准确的。第二件最重要的事情是快速编写代码。正如其他人所指出的,执行时间差可能只有几个计算机周期。问题是..。您可以在一个有1亿行的表上执行此操作,突然之间,这些额外的时钟周期需要几分钟。
当人们不知道更好的代码时,我对使用“易于理解”的代码没有问题。在这种情况下,你确实更了解。使用较慢的代码将是一个错误。如果您想让代码更容易理解,请向代码中添加注释。
https://stackoverflow.com/questions/34679481
复制相似问题