以下功能在我们的DW过夜构建期间被广泛使用超过200次。但是,当我用代码替换函数时,每个查询的时间减少了50%,所以我在想为什么我们首先使用该函数并且最好直接将它输入到SQL INSERT查询中?是否有更好的解决方案,如TRY_CAST。我们在2012版本,虽然是2008版本的前端产品,但不支持TRY_CAST。
CREATE FUNCTION [dbo].[udf_GetDateFromDateTime] (
@Date DATETIME
)
RETURNS DATETIME
AS
BEGIN
/*______________________________________________
**Declare Local Variables
**______________________________________________*/
DECLARE @ReturnValue DATETIME
/*______________________________________________
**Checks for null values
**______________________________________________*/
IF @Date is null
SET @ReturnValue = null
ELSE
BEGIN
/*______________________________________________
**Converts the date to float, rounds it down to the nearest integer
**then converts it to datetime
**______________________________________________*/
SET @ReturnValue = CAST(FLOOR(CAST(@Date AS FLOAT)) AS DATETIME)
END
/*______________________________________________
**Return the result
**______________________________________________*/
RETURN @ReturnValue
END
GO