是有效的smalldatetime?

问题描述 投票:2回答:3

SQL Server 2005

如何检查给定日期是否有效smalldatetime?在将datetime转换为smalldatetime之前,我已经知道该值是有效的datetime。但是在将datetime转换为smalldatetime时,它会引发溢出错误。

所以我想检查该值是否有效smalldatetime,如果它然后转换为smalldatetime,则返回NULL。

提前致谢。

sql-server-2005 tsql
3个回答
1
投票
SELECT CASE WHEN @yourDateTime BETWEEN '19000101 00:00:00.000'
                                   AND '20790606 23:59:29.997'
            THEN CAST(@yourDateTime AS SMALLDATETIME)
            ELSE NULL END

2
投票

这里有一个功能,你可以使用Trouble With ISDATE And Converting To SMALLDATETIME,名称是fnIsSmallDateTime

还有如何使用它的例子


0
投票

当你到达SQL 2012时,你可以使用TRY_CONVERT

SELECT TRY_CONVERT(smalldatetime,@yourDateTime)

如果日期是有效日期,则返回日期,否则返回null。不适用于WHERE子句。

https://docs.microsoft.com/en-us/sql/t-sql/functions/try-convert-transact-sql?view=sql-server-2017

© www.soinside.com 2019 - 2024. All rights reserved.