考虑这个简单的用户定义函数:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER FUNCTION [dbo].[ufn_GetFirstDayOfMonth] ( @pInputDate DATETIME )
RETURNS DATETIME
BEGIN
RETURN CAST(CAST(YEAR(@pInputDate) AS VARCHAR(4)) + '/' +
CAST(MONTH(@pInputDate) AS VARCHAR(2)) + '/01' AS DATETIME)
END
运行时使用:
SELECT [Business].[dbo].[ufn_GetFirstDayOfMonth] ('03/13/15')
返回,2015-03-01 00:00:00.000。太棒了,正是我想要的。现在假设我想打开它的头,使用日期格式mdy并执行以下函数:
set dateformat mdy
SELECT [Business].[dbo].[ufn_GetFirstDayOfMonth] ('03/13/15')
为什么返回2015-03-01 00:00:00.000(与上述完全相同)?