SQL 中的 12/30/9999 日期如何在存储过程中工作?

How does 12/30/9999 date in SQL work in a stored procedure?

我正在读取一个存储过程,我注意到日期参数默认为 12/30/9999 并且也在 Where 条件下。这在存储过程中如何工作?

在参数部分..

ALTER PROCEDURE [DW].[sp_PolicyDetail]
@InForceDate date = '12/30/9999', @PolicyEffectiveDateStart date = null, @PolicyEffectiveDateEnd date = null, @Underwriter_Full_Name varchar(100) = null, @Branch_Office_Name varchar(100) = null

在 Where 条件下..

WHERE P.LINE_OF_BUSINESS_CD= 'EXP'
 AND P.POLICY_STATUS_CD<> 'TMP'
        AND (   @InForceDate = '12/30/9999')
OR      (   P.POLICY_STATUS_CD= 'BND'
                 AND P.POLICY_EFFECTIVE_DT<= @InForceDate
                 AND P.POLICY_EXPIRATION_DT > @InForceDate
                 AND P.CANCELLATION_EFFECTIVE_DT > @InForceDate
                )
        )
    AND (@PolicyEffectiveDateStart IS NULL OR 
        (P.POLICY_EFFECTIVE_DT BETWEEN @PolicyEffectiveDateStart AND @PolicyEffectiveDateEnd))  
    AND P.FROM_DATE <= @InForceDate
    AND P.TO_DATE > @InForceDate

SQL 服务器可以使用默认服务器日期格式将字符串转换为日期,在您的情况下为 MM/dd/YYYY。

SQL服务器还可以根据需要将任何有效格式的字符串转换为CASTCONVERT,并提供格式