Tsql VarChar неявно SmallDateTime

после выполнения следующих действий с помощью smalldatetime ограничение на число возвращаемых результатов, я получаю нулевой результат:

Execute sp_proc @DateOfBirth =   '01/01/1900'

или

Execute sp_proc @DateOfBirth =   '1900-01-01'

Но при использовании следующих varchar аргумент внезапно я могу получить результаты, которые соответствуют 1 января 2000 года. Не smalldatetime неявное преобразование не работать мм/ДД/ГГГГ дат и только 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)

Найдено 3 ответа:

Tsql VarChar implicitly to SmallDateTime

http://stackoverflow.com/questions/507931/tsql-varchar-implicitly-to-smalldatetime

Посмотреть решение →

Яндекс.Метрика