我有一个从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格式导入前2列,因为在尝试导入为datetime时遇到错误。现在,我在表中有数据,我需要将列格式从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
但这不会将列格式转换为日期时间。我将对如何执行此操作有所帮助。谢谢。
尝试使用SET DATEFORMAT。
SET DATEFORMAT
SET DATEFORMAT dmy