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

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

02042015

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

2 Apr 2015

【问题讨论】:

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

标签: sql-server date sql-server-2008-r2 type-conversion


【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 2021-09-22
        • 1970-01-01
        • 1970-01-01
        • 2013-08-13
        • 2012-10-28
        • 2020-08-04
        • 2017-10-01
        相关资源
        最近更新 更多