试试这个:
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
OUTPUT:
DATE
--------------------------------------------------
dasf
2010-01-01 00:00:00.000
(2 row(s) affected)
在该工作例子,我做了一个替代从date
数据类型datetime
因为我是SQL Server 2005和date
数据类型上仅限SQL Server 2008。
列只能是一种数据类型 - 它可以是DATE或VARCHAR(50)。 – 2010-05-07 17:45:10