在SQL Server中将Varchar转换为时间

时间:2013-04-18 05:43:58

标签: sql-server tsql type-conversion

如何将时间格式 “10:02:22 PM” 转换为SQL Server日期时间格式。

我有一列这样的数据。我从CSV文件导入了此列,现在想将其转换为DateTime格式,以便我可以使用日期时间函数。

我希望能够将此列插入到具有正确DateTime格式的另一个表中。

2 个答案:

答案 0 :(得分:3)

使用此链接:http://msdn.microsoft.com/en-us/library/ms187928.aspx

仅限时间转换...

SELECT CONVERT( TIME, '10:00:22 PM' );

提供以下输出......

22:00:22.000000

时间转换与日期和时间......

SELECT CONVERT( DATETIME, '10:00:22 PM' );

提供以下输出......

1900-01-01 22:00:22.0000 

注意:对于datetime,您需要具有特定日期作为输入,否则它会考虑默认世纪日期。

答案 1 :(得分:1)

您无需转换它。使用

时会发生隐式转换
INSERT otherTable
SELECT ....., timeAsVarchar, ...
  FROM csvTable

如果所有时间数据(前导空格或非前导空格)都可以从字符串中解析,则查询将很好地工作。但是,如果有可能出现无法转换为时间的错误或空白数据,请先测试

INSERT otherTable
SELECT ....., CASE WHEN ISDATE(timeAsVarchar)=1 THEN timeAsVarchar END, ...
  FROM csvTable

ELSE NULL是隐含的,所以我把它遗漏了。