tsql – 在T-SQL中使用DATEDIFF

前端之家收集整理的这篇文章主要介绍了tsql – 在T-SQL中使用DATEDIFF前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在sql语句中使用DATEDIFF.我正在选择它,我也需要在WHERE子句中使用它.这句话不起作用……
SELECT DATEDIFF(ss,BegTime,EndTime) AS InitialSave
FROM MyTable
WHERE InitialSave <= 10

它给出了消息:无效的列名“InitialSave”

但这句话很好……

SELECT DATEDIFF(ss,EndTime) AS InitialSave
FROM MyTable
WHERE DATEDIFF(ss,EndTime) <= 10

我的程序员说这是低效的(似乎我在调用函数两次).

所以有两个问题.为什么第一个陈述不起作用?使用第二个语句来执行它是否效率低下?

解决方法

您不能访问where语句中select语句中定义的列,因为它们只有在执行where之后才会生成.

但是你可以这样做

select InitialSave from 
(SELECT DATEDIFF(ss,EndTime) AS InitialSave
FROM MyTable) aTable
WHERE InitialSave <= 10

作为旁注 – 这基本上将DATEDIFF移动到where语句中,就其首次定义的位置而言.在where语句中的列上使用函数会导致索引无法有效使用,如果可能的话应该避免使用,但是如果你必须使用datediff,那么你必须这样做!

原文链接:https://www.f2er.com/mssql/76404.html

猜你在找的MsSQL相关文章