SQL Server中日期字段上的修剪函数

SQL Server中日期字段上的修剪函数,sql,sql-server,Sql,Sql Server,我编写了以下查询: select * from employees order by (CAST(LTRIM(RTRIM(JoingDate)) AS SMALLDATETIME)) desc 查询会影响性能。我们是否需要在DateTime列上使用TRIM?我们如何重写上述查询以提高性能并最小化执行时间?我们是否使用CONVERT函数而不是CAST?除非我遗漏了什么,否则您应该这样做: select * from employees order by JoingDate desc

我编写了以下查询:

select * 
from employees  
order by (CAST(LTRIM(RTRIM(JoingDate)) AS SMALLDATETIME)) desc

查询会影响性能。我们是否需要在
DateTime
列上使用
TRIM
?我们如何重写上述查询以提高性能并最小化执行时间?我们是否使用
CONVERT
函数而不是
CAST

除非我遗漏了什么,否则您应该这样做:

select * 
from employees  
order by JoingDate desc
不确定为什么要将日期转换为字符串,然后再转换回日期。如果您希望smalldatetime超过datetime,您可以对其进行强制转换/转换,但为什么呢

select * 
from employees  
order by CAST(JoingDate AS SMALLDATETIME) desc

不,
CONVERT
over
CAST
不会给你带来任何加速。可能有帮助的是:(1)不要选择所有列(
select*
),而只选择您真正需要的列;(2)不要选择所有行(通过省略
WHERE
子句)…首先去掉皇家的“we”。这是你的问题。使用“我”、“我”和“我的”。你的
JoingDate
长什么样
CAST
CONVERT
几乎相同,因此不要期望从中获得任何性能增益。
ORDER BY
成本较高,索引会降低成本,但是我相信您需要
JoingDate
字段处于正确的数据类型中,以便从索引中获得任何好处。为什么您不能自己运行不同的查询来查看一个查询是否更快,或者,如果你可以删除
修剪
?为什么要将日期转换为字符串,然后再转换回日期?可能日期是以某种不按时间排序的次优字符串格式存储的。@MartinSmith OP在他的帖子中特别说这是一个
日期时间
。也许这不是字面意思。