sql - 将 Varchar 列转换为日期时间格式 - SQL Server

标签 sql sql-server datetime

我有一个从 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 列,因为我在尝试导入为日期时间时遇到错误。现在我有表中的数据,我需要将列格式从 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 dmy

关于sql - 将 Varchar 列转换为日期时间格式 - SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512480/

相关文章:

SQL Server 如何对表名的动态列表运行更新

sql-server - TSQL XML 定位特定 block

php adodb MSSQL 连接

c# - 如何解析 EXIF 日期时间数据

php - postgres Actor |将间隔转换为 iso_8601 格式

Python3.5时区转换

sql - 返回表的字段名称的 SQL 命令是什么?

sql - Oracle Database Enforce CHECK 对多个表

mysql - 有没有办法计算 first_check_in 和 last_check_out 之间的总休息时间?

sql-server - 在 SQL Server 中创建 USER 生成错误 : SUBQUERY RETURNED MORE THAN 1 VALUE