Frage

Wenn die Ausführung folgende Verwendung eine small Einschränkung für die zurückgegebenen Ergebnisse, bekomme ich null Ergebnisse:

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

oder

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

Aber wenn die folgende varchar Argument all die plötzliche i Ergebnisse zu erhalten, die auf 1. Januar 2000 entsprechen Hat small implizite Konvertierung für nicht arbeiten mm / tt / Termine und nur mm / tt / jj Daten?

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

Das gibt alle Ergebnisse für 01/01/2000 Geburtstage!

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)
War es hilfreich?

Lösung

"01/01/00" umgewandelt wird auf der Grundlage des " zweistelliges Jahr Cutoff " Option. So wird es 1. Januar 2000.

Wenn Sie ‚1900-01-01‘ senden, dann wird Ihr Code zeigt Ihnen nur die Ergebnisse erhalten, wenn Sie DOB = 1. JANUAR 1900.

Other than that, es funktioniert wie beworben. Es sei denn, Sie Execute sp_proc @DateOfBirth = DEFAULT ausführen möchten DOB zwingen, um ignoriert werden

Andere Tipps

Technisch sollten Sie die Ausgabe werden zu vergleichen:

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

zu:

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

oder

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

verwenden, um ein sicheres Format wie YYYYMMDD (keine Striche)

laufen diese auch, um zu sehen, was passiert,

select convert(smalldatetime,'19000101')
select convert(smalldatetime,'01/01/00')
select convert(smalldatetime,0)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top