это действительно маленькое время? - PullRequest
2 голосов
/ 23 сентября 2010

SQL Server 2005

Как проверить, если задано дата действительна smalldatetime ? Перед преобразованием datetime в smalldatetime я уже знаю, что это допустимое значение datetime. Но при преобразовании datetime в smalldatetime возникает ошибка переполнения.

Итак, я хотел проверить, является ли значение допустимым smalldatetime, и если оно будет преобразовано в smalldatetime, в противном случае вернуть NULL.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 23 сентября 2010

Здесь есть функция T рубль с ISDATE и преобразованием в SMALLDATETIME , которую вы можете использовать, имя fnIsSmallDateTime

Есть также примеры того, как ее использовать

1 голос
/ 23 сентября 2010
SELECT CASE WHEN @yourDateTime BETWEEN '19000101 00:00:00.000'
                                   AND '20790606 23:59:29.997'
            THEN CAST(@yourDateTime AS SMALLDATETIME)
            ELSE NULL END
0 голосов
/ 10 июля 2018

Когда вы переходите на SQL 2012, вы можете использовать TRY_CONVERT.

SELECT TRY_CONVERT(smalldatetime,@yourDateTime)

Возвращает дату, если она является действительной, в противном случае - ноль. Не будет работать в предложении WHERE.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...