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

     2023-05-08     139

关键词:

【中文标题】将 Varchar 列转换为日期时间格式 - SQL Server【英文标题】:Convert Varchar Column to Datetime format - SQL Server 【发布时间】:2014-03-19 16:38:32 【问题描述】:

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

但这不会将列格式转换为日期时间。对于如何做到这一点,我将不胜感激。谢谢。

【问题讨论】:

你用什么方法导入这些? 一个简单的Cast(FirstTimeTaken as datetime) 应该可以解决问题,如果所有字段的格式都像我们看到的那样。 @DaveJohnson:我认为这行不通:SELECT CAST('28/07/2013 16:57:26' AS DATETIME)。至少不是在 OP 的环境中。 @DMason Jonas 的回答现在对我来说更有意义了。不知道我的阅读理解能力发生了什么变化...... 【参考方案1】:

尝试使用SET DATEFORMAT

SET DATEFORMAT dmy

【讨论】:

我在 ALTER COLUMN 命令之前添加了您的代码行,它运行良好。我什至在第一次运行后注释掉了你的代码行,一切仍然正常。该代码是否永久修改了我的设置? 是的,您可能希望在完成重置后运行SET DATEFORMAT mdy 我在英国,所以我希望它应该永久设置为 DMY。谢谢 我发现注销并重新启动后,DATEFORMAT 丢失了,需要重新设置。永久解决此问题的技巧是在对象资源管理器中选择安全--> 登录。然后找到用户并右键单击属性。在底部,您将看到默认语言。将其更改为英式英语可以让我永久修复。【参考方案2】:

您可以从#Temp 表中选择数据,如下所示:

SELECT 
    CONVERT(DATETIME, FirstTimeTaken, 103 ),
    CONVERT(DATETIME, LatestTimeTaken, 103)
FROM #CSVTest_Data

这会将字段作为 DATETIME 数据类型返回。从那里开始,做任何你想做的事。

【讨论】:

将 varchar(ddmmyyyy) 转换为日期格式

】将varchar(ddmmyyyy)转换为日期格式【英文标题】:convertvarchar(ddmmyyyy)todateformat【发布时间】:2014-10-1305:18:16【问题描述】:如何将ddmmyyyy(例如varchar(8))转换为日期格式(dd/mm/yyyy)?我有一个接受datevarchar(8)参数的存储过程。我... 查看详情

Netezza:如何将 varchar 转换为日期

】Netezza:如何将varchar转换为日期【英文标题】:Netezza:Howtoconvertvarchartodate【发布时间】:2013-12-2019:21:13【问题描述】:我有一个名为FECHAATENDIDO的VARCHAR列,其中包含不同格式的数据,例如:2013-07-0414/08/201220080522我需要一个查询... 查看详情

如何将存储为 VARCHAR 的 UTC 日期时间值转换为常规日期时间

】如何将存储为VARCHAR的UTC日期时间值转换为常规日期时间【英文标题】:HowtoconvertUTCdatetimevaluesstoredasaVARCHARtoaregulardatetime【发布时间】:2021-07-1701:14:20【问题描述】:我有这个日期\'2021-04-22T17:06:59.391Z\'存储在UTC日期时间中,但... 查看详情

Varchar 到日期时间格式

】Varchar到日期时间格式【英文标题】:VarchartoDatetimeformat【发布时间】:2020-06-2605:16:49【问题描述】:我需要将Table1中的Registrationdate(varchar)列转换为Table2中的Registrationdate(datetime)格式。我需要在插入代码中使用它。InsertFull_patient... 查看详情

将 VARCHAR2 转换为日期,然后再次将其转换为特定的日期格式

】将VARCHAR2转换为日期,然后再次将其转换为特定的日期格式【英文标题】:ConvertingVARCHAR2toDateandthenagainconvertittoaspecificDateformat【发布时间】:2013-10-2109:54:26【问题描述】:我们有一个旧表,其中日期字段以多种格式存储在VARCHAR... 查看详情

如何将包含日期的 varchar 字段类型转换为正确的日期格式

】如何将包含日期的varchar字段类型转换为正确的日期格式【英文标题】:Howtoconvertavarcharfieldtypecontainingdatetoaproperdateformat[duplicate]【发布时间】:2016-05-0207:15:02【问题描述】:我有一个包含日期值的varchar字段,例如:02042015如何... 查看详情

将不同格式列的String数据类型的日期转换为PostgreSQL中的日期数据类型

...2020-06-2219:48:44【问题描述】:我有一个包含日期的String(varchar)类型的数据库表。这些日期采用以下格式(示例):15-06-201815 查看详情

将 varchar2 转换为日期

】将varchar2转换为日期【英文标题】:Convertvarchar2todate【发布时间】:2014-10-2306:07:26【问题描述】:以下是我的代码示例。我需要将varchar2中的need_by转换为日期格式的need_by_date。时区信息是我遇到问题的地方。此日期格式的正确... 查看详情

在 Azure Synapse 中将 .parquet 文件 varchar 列转换为日期时间

】在AzureSynapse中将.parquet文件varchar列转换为日期时间【英文标题】:Transform.parquetfilevarcharcolumntodatetimeinAzureSynapse【发布时间】:2022-01-0910:57:05【问题描述】:我正在以.parquet文件的形式将JSON遥测数据从我们的IoT中心发送到AzureDat... 查看详情

使用自定义格式在 SQL Server 上将 varchar 转换为 datetime

】使用自定义格式在SQLServer上将varchar转换为datetime【英文标题】:ConvertvarchartodatetimeonSQLServerwithcustomformat【发布时间】:2015-02-1112:05:31【问题描述】:我有一个varchar列,它表示以下格式的日期:“DDMMYYHHMMSS”。我正在以这种方... 查看详情

bigint不会转换为正确的日期格式(代码片段)

...试图通过使用将列转换为日期/时间格式,但未成功CONVERT(varchar(10),CONVERT(date,[next_run_date],110),110)AS'NextRun'只是得到'不允许从数据类型int到日期的显式转换'我想要展示的是[next_run_date]might=10-14-2018和[next_run_time]=01:00。只是不确定如... 查看详情

在oracle中将varchar字段数据转换为日期格式

】在oracle中将varchar字段数据转换为日期格式【英文标题】:convertvarcharfielddataindateformatinoracle【发布时间】:2014-08-0414:12:04【问题描述】:我的表测试列有cretaed_dt和id。两者都是varchar2类型。描述测试IDVarchar2(30)Created_Dtvarchar2(30)... 查看详情

如何将所有日期格式转换为日期列的时间戳?

】如何将所有日期格式转换为日期列的时间戳?【英文标题】:Howtoconvertallthedateformattoatimestampfordatecolumn?【发布时间】:2020-12-3012:54:39【问题描述】:我使用的是PySpark3.0.1版。我正在读取一个csv文件作为具有2个日期列的PySpark数... 查看详情

将日期(varchar)和时间(varchar)转换为日期时间Oracle

】将日期(varchar)和时间(varchar)转换为日期时间Oracle【英文标题】:Convertdate(varchar)andtime(varchar)todatetimeOracle【发布时间】:2014-07-1915:08:03【问题描述】:如何将Oracle中的两个varchar字段转换为datetime类型?我有一个日期字段(... 查看详情

从 xlsx 文件加载数据后,Oracle 将 varchar / hex 列转换为数字格式

】从xlsx文件加载数据后,Oracle将varchar/hex列转换为数字格式【英文标题】:Oracleconvertcolumnwhichisvarchar/hextonumericformatafterloadingdatafromxlsxfile【发布时间】:2019-06-1308:11:30【问题描述】:我将一个Excel文件加载到一个表格中,发现我... 查看详情

如何正确地将数据帧的所有日期时间列转换为 iso 格式

】如何正确地将数据帧的所有日期时间列转换为iso格式【英文标题】:Howtocorrectlyconvertalldatetimecolumnsofadataframeintoisoformat【发布时间】:2020-09-2906:31:45【问题描述】:具有多个从不同来源聚合的日期时间列的数据框格式不一致。... 查看详情

如何更改 varchar 数据类型列的日期时间格式

】如何更改varchar数据类型列的日期时间格式【英文标题】:Howtochangedatetimeformatofvarchardatatypecolumn【发布时间】:2018-11-0316:55:34【问题描述】:如何在SQLServer中更改varchar数据类型列的日期时间格式。[Value]列的数据类型是varchar。... 查看详情

将 varchar 转换为 datetime 以对日期进行排序?

】将varchar转换为datetime以对日期进行排序?【英文标题】:Convertvarchartodatetimetosortdate?【发布时间】:2019-07-0502:42:03【问题描述】:我想尝试对日期进行排序,但有一些限制,因为这些列是varchar。现有数据这是我测试的查询。SEL... 查看详情