更改列[TIME]时间不起作用

时间:2015-11-27 06:34:50

标签: sql sql-server

我对将时间列更改为Time数据类型以在另一列中创建日期/时间戳感到头疼。我有一个日期数据类型的日期,但只是不能正确的时间。

我在列中查找了查询原因:

ALTER TABLE #TEMP ALTER COLUMN [TIME] TIME

会失败并给我错误:

 Msg 241, Level 16, State 1, Line 72
Conversion failed when converting date and/or time from character string.

我为nulls寻找'' WHERE ISNUMERIC([TIME]) = 1 我甚至更新了表格以取出Newline Chars:

UPDATE #TEMP SET [TIME] = REPLACE(REPLACE([TIME], CHAR(13), ''), CHAR(10), '') FROM #TEMP

我只是不知道还能做什么。目前[TIME]的日期类型为nvarchar(MAX),只是时间数据类型,因此我可以将[DATE][TIME]合并,并创建[DateTimeStamp]

有没有人对为什么不这样做有任何其他想法?

1 个答案:

答案 0 :(得分:0)

您可以使用ISDATE功能选择损坏的数据:

select * from #TEMP 
where ISDATE([TIME]) = 0

https://msdn.microsoft.com/en-us/library/ms187347.aspx

  

如果表达式是有效的日期,时间或日期时间值,则返回1;   否则,0。