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

Posted

技术标签:

【中文标题】如何将包含日期的 varchar 字段类型转换为正确的日期格式【英文标题】:How to convert a varchar field type containing date to a proper date format [duplicate] 【发布时间】:2016-05-02 07:15:02 【问题描述】:

我有一个包含日期值的 varchar 字段,例如:

02042015

如何将其转换为应返回值的日期格式:

2 Apr 2015

【问题讨论】:

你试过什么?您需要做的第一件事是确认数据库中的每条记录都遵循这种格式。 @Nick.McDermaid 是的,数据库中的所有记录都包含相同的格式... Date have no display format. 如果你需要一个显示格式,你想把一个字符串转换成另一个字符串。 @Nick.McDermaid Actuallt 我还没有尝试过任何东西......这些天我刚开始学习数据库,我对数据库很陌生......尝试优素福在以下答案中提到的脚本 您使用的是什么版本的 sql server? 【参考方案1】:

您可以使用CONVERT106 格式如下:

declare @date varchar(60) = '02042015'
select convert(varchar(20),cast(right(@date,4) + substring(@date,3,2) + left(@date,2) as datetime), 106)

输出

02 Apr 2015

【讨论】:

【参考方案2】:

我想会有一些转换格式,所以你可以放:

select(convert(datetime,'010109',<some magic number>))

并得到结果,但我似乎找不到给出正确日期的结果

你也可以试试这个:

declare @dt varchar(6)
select @dt = '010109'
select convert(datetime,RIGHT(@dt,2) + SUBSTRING(@dt,3,2) + LEFT(@dt,2))

【讨论】:

【参考方案3】:

试试这个

DECLARE @V_DATE VARCHAR(20) = '02042015'
SELECT CONVERT(varchar(11), 
            CONVERT(datetime,RIGHT(@V_DATE,4)+LEFT(@V_DATE,2)+SUBSTRING(@V_DATE,3,2))
            ,106)

【讨论】:

以上是关于如何将包含日期的 varchar 字段类型转换为正确的日期格式的主要内容,如果未能解决你的问题,请参考以下文章

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

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

如何在不丢失 Xampp 中的数据的情况下将类型从 varchar 更改为 Date

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

oracle日期字段为varchar2类型,为啥能直接比较

如何在 MySQL 中使用 Case When 和 Str_to Date 将 Varchar 日期值转换为日期数据类型