如何将 varchar 日期转换为 datetime2 日期

     2023-05-09     161

关键词:

【中文标题】如何将 varchar 日期转换为 datetime2 日期【英文标题】:How to convert varchar dates into datetime2 dates 【发布时间】:2019-05-01 22:57:36 【问题描述】:

我已将我的表上传到 SQL Server 中,每一列都是 varchar(max)nvarchar(max) 数据类型。我这样做的原因是因为我从一个包含数百万条记录的 .CSV 文件上传,我不想在将数据输入 SQL Server 之前花费数小时清理数据。

但是,我现在的 Log_Date 列中包含所有类型的字符。我能够识别我想要的两个格式化 log_dates。

两种日志日期格式是

    MM/DD/YYYY MM:SS(或M/D/YYYY M:SS)或 采用适当的日期时间格式

我无法将 Log_Date 转换为 datetime 字符,因为其中还有其他数据类型(单词、符号、数字和符号等)会阻止转换。

如何将我的 varchar Log_DateMM/DD/YYYY MM:SS(或 M/D/YYYY M:SS)转换为 @ 987654330@?

这是我尝试过的,但它不会转换记录。

select 
     id
    ,log_date
    ,case when log_date like '%[0-9]%/%[0-9]%/%[0-9]%' 
         then try_convert(datetime2,log_date,126) 
         else null 
     end as Potato
from 
    full_union
where 
    id not like '%[^0-9]%'
    and id = 4112541

以下是我的结果摘录

id      log_date                        Potato
-----------------------------------------------
4112541 2/13/2019 15:41                 NULL
4112541 2/13/2019 15:41                 NULL
4112541 2019-04-18 11:42:00.0000000     NULL
4112541 2019-04-18 11:45:00.0000000     NULL

【问题讨论】:

【参考方案1】:

格式 126 是非常具体的 ISO 标准格式,日期和时间之间有一个“T”。

SQL Server 非常擅长识别格式,所以这可能就足够了:

(case when log_date like '%[0-9]%-%[0-9]%-%[0-9]%' 
     then try_convert(datetime2, log_date) 
 end) as Potato

编辑:

由于您的模式中的/,您遇到了问题。但即使是固定的,它也不起作用。连字符发生了一些奇怪的事情。这确实有效:

(case when log_date like '%[0-9]%_%[0-9]%_%[0-9]%' 
     then try_convert(datetime2,log_date) 
     else '2000-01-01' 
 end) as Potato

【讨论】:

我试过了,但它仍然返回 null。不知道为什么转换不起作用。铸造作品:cast(log_date as datetime2)。试试这个小提琴:sqlfiddle.com/#!18/2b3af/6 感谢 KingOfAllTrades!到目前为止,这适用于我当前的身份。我会尽快尝试其余的日志! 有谁知道我怎样才能让 KingOfAllTrades 回答我的问题? @Computer_Nerd 。 . .您可以接受此答案或投票。任何人(有足够的声誉)都可以投票给答案。只有 OP 可以接受 - 每个问题只能接受一个答案。 @GordonLinoff 我的问题是由单击“添加评论”而不是“发布您的答案”的人回答的。我正在寻找一种方法来表彰通过评论回答我问题的人。

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

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

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

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

无法将 Varchar 转换为 DateTime - 从字符串转换日期和/或时间时转换失败

】无法将Varchar转换为DateTime-从字符串转换日期和/或时间时转换失败【英文标题】:CannotconvertVarchartoDateTime-Conversionfailedwhenconvertingdateand/ortimefromcharacterstring【发布时间】:2020-06-2522:21:12【问题描述】:我正在使用的源数据,这些... 查看详情

如何将 DateTime 转换为 VarChar

】如何将DateTime转换为VarChar【英文标题】:HowtoconvertDateTimetoVarChar【发布时间】:2010-09-0914:49:31【问题描述】:我需要将DateTime变量中的值转换为varchar变量格式为yyyy-mm-dd格式(没有时间部分)。我该怎么做?【问题讨论】:CONVER... 查看详情

完全按原样将 Datetime 转换为 Varchar

】完全按原样将Datetime转换为Varchar【英文标题】:ConvertDatetimetoVarcharexactlyasis【发布时间】:2014-10-2117:15:46【问题描述】:我正在尝试将日期时间完全转换为varchar。所以我想要以下内容:SELECTCONVERT(varchar(30),\'2014-10-2112:02:22.555\')... 查看详情

将 varchar 转换为 datetime 并添加秒

】将varchar转换为datetime并添加秒【英文标题】:Convertvarchartodatetimeandaddseconds【发布时间】:2017-01-0612:39:54【问题描述】:我有两列startDate(160812-年、月、日)和startTime(112345-小时、模仿、秒)与varchar数据类型我的目标是连接它们并... 查看详情

如何在 C# 中将字符串转换为 DateTime?

...8【问题描述】:是否可以在c#中将string(数据库中存储为varchar的日期)转换为datetime?例如。我有一个将日期存储为varchar的表,并将值存储为示例01/21/1411:42:36PM我想得到yyyy-mm-dd格式的结果我试过了,Cultu 查看详情

如何将日期时间转换为日期?

...如何将日期时间转换为日期?【英文标题】:HowdoIconvertadatetimetodate?【发布时间】:2011-04-1404:20:40【问题描述】:如何在Python中将datetime.datetime对象(例如datetime.datetime.now())的返回值转换为datetime.date对象?【问题讨论】:如果你... 查看详情

在 SQL Server 中将 varchar 转换为 datetime [重复]

】在SQLServer中将varchar转换为datetime[重复]【英文标题】:convertvarchartodatetimeinSQLServer[duplicate]【发布时间】:2013-03-2808:49:15【问题描述】:在varchar(dayname,monthdate,year)中设置日期,例如(1013年1月16日,星期三),我必须将其转换为日... 查看详情

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

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

如何解决“将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。”错误

】如何解决“将varchar数据类型转换为datetime数据类型导致值超出范围。”错误【英文标题】:Howtosolve"Theconversionofavarchardatatypetoadatetimedatatyperesultedinanout-of-rangevalue."error【发布时间】:2016-10-2708:07:03【问题描述】:selecttop1... 查看详情

System.Data.SqlClient.SQLException:将 varchar 数据类型转换为 datetime

】System.Data.SqlClient.SQLException:将varchar数据类型转换为datetime【英文标题】:System.Data.SqlClient.SQLException:Theconversionofavarchardatatypetodatatime【发布时间】:2019-04-2913:38:09【问题描述】:过滤两个日期之间的数据我收到以下错误:System.... 查看详情

将 varchar 数据类型转换为 datetime 数据类型导致 SQL 查询中的值超出范围

】将varchar数据类型转换为datetime数据类型导致SQL查询中的值超出范围【英文标题】:Conversionofavarchardatatypetoadatetimedatatyperesultedinanout-of-rangevalueinSQLquery【发布时间】:2015-02-0205:05:41【问题描述】:我有一个表,其中有一列存储日... 查看详情

错误 sql:将 varchar 数据类型转换为 datetime 数据类型导致值超出范围

】错误sql:将varchar数据类型转换为datetime数据类型导致值超出范围【英文标题】:Errorsql:Theconversionofavarchardatatypetoadatetimedatatyperesultedinanout-of-rangevalue【发布时间】:2014-07-0611:55:04【问题描述】:我尝试使用以下代码输入当天的... 查看详情

如何将 SQL 日期转换为 DateTime?

】如何将SQL日期转换为DateTime?【英文标题】:HowtoconvertaSQLdatetoaDateTime?【发布时间】:2013-05-1403:36:42【问题描述】:我的SQL数据库中有一个date类型的列。如何将其转换为C#DateTime,然后再转换回SQLdate?【问题讨论】:你是如何... 查看详情

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

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

Netezza:如何将 varchar 转换为日期

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

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

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