我有一个从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数据类型转换为日期时间数据类型导致超出范围的值'。 我知道删除最后一行数据可以解决问题,所以我怀疑系统认为日期格式是MM / DD / YYYY,而实际上是DD / MM / YYYY。 以下查询正常工作:
SELECT convert(VARCHAR(50),FirstTimeTaken,105) from #CSVTest_Data
SELECT convert(VARCHAR(50),LatestTimeTaken,105) from #CSVTest_Data
但是这不会将列格式转换为datetime。我将不胜感激如何做到这一点。感谢。
答案 0 :(得分:4)
尝试使用SET DATEFORMAT
。
SET DATEFORMAT dmy
答案 1 :(得分:2)
您可以从#Temp表中选择数据,如下所示:
SELECT
CONVERT(DATETIME, FirstTimeTaken, 103 ),
CONVERT(DATETIME, LatestTimeTaken, 103)
FROM #CSVTest_Data
这将字段作为DATETIME数据类型返回。从那里,做你需要的任何事情。