我有一张从CSV文件导入的数据表,如下所示:
FirstTimeTaken LatestTimeTaken Market Outcome Odds NumberOfBets VolumeMatched InPlay
03/08/2013 15:30:14 03/08/2013 15:32:28 Over/Under 3.5 Goals Over 3.5 Goals 5 10 118 1
03/08/2013 14:26:40 03/08/2013 14:29:43 Correct Score 0 - 0 7 12 279 1
03/08/2013 15:15:34 03/08/2013 15:27:39 Match Odds Barnsley 110 7 9 1
28/07/2013 16:57:26 29/07/2013 21:35:55 Match Odds Barnsley 3 9 35 0
因为我在尝试将数据导入为日期时间类型时出现错误,所以不得不以Varchar格式导入前两列。现在我已经将这些数据存储于表格中,需要将列的格式从Varchar转换为Datetime。我尝试了以下方法:
ALTER TABLE #CSVTest_Data
ALTER COLUMN FirstTimeTaken DATETIME
ALTER TABLE #CSVTest_Data
ALTER COLUMN LatestTimeTaken DATETIME
这导致错误:'将varchar数据类型转换为datetime数据类型时导致超出范围的值'。 我知道删除最后一行数据可以解决问题,因此我怀疑系统认为日期格式是MM/DD/YYYY,而实际上它是DD/MM/YYYY。 以下查询正常工作:
SELECT convert(VARCHAR(50),FirstTimeTaken,105) from #CSVTest_Data
SELECT convert(VARCHAR(50),LatestTimeTaken,105) from #CSVTest_Data
但这并不会将列格式转换为日期时间格式。我希望能得到一些关于如何进行此操作的帮助。谢谢。
Cast(FirstTimeTaken as datetime)
应该就可以解决问题,如果所有字段的格式都像我们看到的那样。 - Dave JohnsonSELECT CAST('28/07/2013 16:57:26' AS DATETIME)
。至少在OP的环境中不起作用。 - Dave Mason