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



我正在读取一个存储过程,我注意到日期参数默认值为 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 Server可以使用默认的服务器日期格式将字符串转换为日期,在您的情况下为MM/dd/YYYY。

如果需要,SQL Server 还可以使用 CASTCONVERT 转换任何有效格式的字符串,并提供格式

最新更新