小编典典

将Varchar列转换为Datetime格式-SQL Server

sql

我有一个从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

但这不会将列格式转换为日期时间。我将对如何执行此操作有所帮助。谢谢。


阅读 168

收藏
2021-05-16

共1个答案

小编典典

尝试使用SET DATEFORMAT

SET DATEFORMAT dmy
2021-05-16