Lors de l'exécution de ce qui suit en utilisant une contrainte smalldatetime sur les résultats retournés, je reçois aucun résultat:Tsql VarChar implicitement SmallDateTime
Execute sp_proc @DateOfBirth = '01/01/1900'
ou
Execute sp_proc @DateOfBirth = '1900-01-01'
Mais lorsque vous utilisez le varchar suivant argument tout à coup je reçois des résultats qui correspondent au 1 janvier 2000. La conversion implicite de smalldatetime ne fonctionne pas pour les dates mm/jj/aaaa et seulement pour les dates mm/jj/aa?
Execute sp_proc @DateOfBirth = '01/01/00'
Cela renvoie tous les résultats pour 01/01/2000 anniversaires!
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)