我正在读取一个存储过程,我注意到日期参数默认值为 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 还可以使用 CAST
和 CONVERT
转换任何有效格式的字符串,并提供格式