从SQL Server中的datetime字段中删除时间部分时,哪种方法提供了最佳性能?
a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
Run Code Online (Sandbox Code Playgroud)
要么
b) select cast(convert(char(11), getdate(), 113) as datetime)
Run Code Online (Sandbox Code Playgroud)
第二种方法确实发送了更多的字节,但这可能没有转换速度那么重要.
两者似乎都非常快,但在处理数十万或更多行时速度可能会有所不同?
另外,是否有可能有更好的方法来摆脱SQL中日期时间的时间部分?
例如,我有这个表:
itemgroup | 描述| 价格
A,a,10
A,b,12
A,c,14
B,g,11
B,h,16
现在我想在一个组中选择价格最高的行,如下所示:
A,c,14
B,h,16
SQL查询(功能齐全)让我接近这个:
SELECT itemgroup, MAX( price )
FROM table
GROUP BY itemgroup
Run Code Online (Sandbox Code Playgroud)
A,14
B,16
通过尝试这个我得到一个"不是GROUP BY表达式"-error:
SELECT itemgroup, description, MAX( price )
FROM table
GROUP BY itemgroup
Run Code Online (Sandbox Code Playgroud)
我需要像这样的伪查询:
SELECT itemgroup, IGNORE( description), MAX( price )
FROM table
GROUP BY itemgroup
Run Code Online (Sandbox Code Playgroud)
我希望我能解释一下我的小问题.