建立 Scalar Function
把 [日期 datetime] 轉為 [民國年 char(7)],不涉及 table 讀取
實際執行
Profile 觀察
在 Profile 內還是可以看見反覆執行情況,看起來這是 Scalar Function 宿命啦,另外開 Profile 時要選擇 Tuning 範本來收集,一開始使用預設 standard 範本觀察不到,還想說讀不讀取 table 竟然會有差別,完全就是誤會
CREATE FUNCTION udfConvertToTWDate
(
@ADDate datetime
)
RETURNS char(7)
AS
BEGIN
DECLARE @TWYY char(3) = RIGHT(REPLICATE('0' , 3) + CAST(YEAR(@ADDate) - 1911 as varchar(3)) , 3)
DECLARE @MM char(2) = RIGHT(REPLICATE('0' , 2) + CAST(MONTH(@ADDate) as varchar(2)) , 2)
DECLARE @DD char(2) = RIGHT(REPLICATE('0' , 2) + CAST(DAY(@ADDate) as varchar(2)) , 2)
RETURN @TWYY + @MM + @DD
END
GO
實際執行
ALTER DATABASE [AdventureWorks2022] SET COMPATIBILITY_LEVEL = 140;
SELECT
BusinessEntityID ,
LastName ,
MiddleName ,
FirstName ,
ModifiedDate ,
[dbo].udfConvertToTWDate(ModifiedDate) AS TWDate
FROM Person.Person
WHERE ModifiedDate BETWEEN '2008-01-01' AND '2008-12-31'
Profile 觀察
在 Profile 內還是可以看見反覆執行情況,看起來這是 Scalar Function 宿命啦,另外開 Profile 時要選擇 Tuning 範本來收集,一開始使用預設 standard 範本觀察不到,還想說讀不讀取 table 竟然會有差別,完全就是誤會
沒有留言:
張貼留言