Рассмотрим эту простую пользовательскую функцию:
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. Фантастика, именно то, что я хотел. Теперь предположим, что я хотел перевернуть все с ног на голову, использовать dateformat mdy и выполнить функции как:
set dateformat mdy
SELECT [Business].[dbo].[ufn_GetFirstDayOfMonth] ('03/13/15')
почему 2015-03-01 00: 00: 00.000 (точно так же, как указано выше) возвращено?