При выполнении следующего с использованием ограничения smalldatetime для возвращаемых результатов я получаю нулевые результаты:
Execute sp_proc @DateOfBirth = '01/01/1900'
или
Execute sp_proc @DateOfBirth = '1900-01-01'
Но при использовании следующего аргумента varchar неожиданно я получаю результаты, соответствующие 1 января 2000 года. Неявное ли преобразование smalldatetime не работает для дат mm / dd / YYYY и только для дат mm / dd / YY?
Execute sp_proc @DateOfBirth = '01/01/00'
Возвращает все результаты за дни рождения 01.01.2000!
CREATE PROCEDURE [dbo].[sp_proc]
-- Add the parameters for the stored procedure here
@DateOfBirth SmallDateTime = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT *
FROM
view_People
WHERE
FirstName LIKE '%' + IsNull(@FName ,FirstName) + '%'
AND
LastName LIKE '%' + IsNull(@LName,LastName) + '%'
AND
DOB = IsNull(@DateOfBirth,DOB)
AND
SSN = IsNull(@SSN,SSN)