попробуйте это:
DECLARE @DATE VARCHAR(50) = 'dasf'
SELECT CASE
WHEN ISDATE(@DATE)=1 THEN CONVERT(char(23),CONVERT(date,@DATE),121)
ELSE @DATE
END
Он в основном отформатирует вашу действительную дату и оставит без даты одни. Это то, что вы после?
фактический рабочий образец:
DECLARE @YourTable table (DATE VARCHAR(50))
INSERT @YourTable VALUES ('dasf')
INSERT @YourTable VALUES ('1/1/2010')
SELECT
CASE
WHEN ISDATE(DATE)=1 THEN CONVERT(char(23),CONVERT(datetime,DATE),121)
ELSE DATE
END AS DATE
FROM @YourTable
ВЫВОД:
DATE
--------------------------------------------------
dasf
2010-01-01 00:00:00.000
(2 row(s) affected)
В рабочем примере я заменил тип данных date
на datetime
, потому что я использую SQL Server 2005, а тип данных date
- только SQL Server 2008.