【问题标题】:Convert DDMMYYYY to YYYYMMDD date format in sql server?在sql server中将DDMMYYYY转换为YYYYMMDD日期格式?
【发布时间】:2016-08-25 06:45:41
【问题描述】:

我在表格中有一个日期为"26052016",格式为DDMMYYYY 我想将此日期转换为"YYYYMMDD" 格式。

任何想法
这个方法我试过了

select CONVERT(varchar(8),[doc-date],112) FROM C034_PDK_ParallelBillingSourceExtract

但这给了我相同的日期。

请帮帮我

【问题讨论】:

  • 日期列的列名是什么?
  • 列名是“doc-date”
  • 我真的建议您更新您的表格并使用适当的数据类型来存储您的日期值。

标签: sql-server date


【解决方案1】:

我可以找到这种方式,我不知道是否存在其他方式..

declare @date nvarchar(max)='01052016'

select convert(varchar(8),cast(CONCAT(SUBSTRING(@date,3,2),'/',SUBSTRING(@date,1,2),'/',SUBSTRING(@date,5,4)) as date),112)as [YYYYMMDD]

清除代码:

declare @date nvarchar(max)='01052016'
declare @date1 date
set @date1 =cast(CONCAT(SUBSTRING(@date,3,2),'/',SUBSTRING(@date,1,2),'/',SUBSTRING(@date,5,4)) as date)

select convert(varchar(8),@date1,112)as [YYYYMMDD]

如果您使用的是Sql version< 2012,那么您需要跳过CONCAT 并使用+ 进行字符串连接。

【讨论】:

    【解决方案2】:
     SELECT CONVERT(VARCHAR(8), doc-date, 112) AS [YYYYMMDD] from
     C034_PDK_ParallelBillingSourceExtract
    

    检查...这应该可以正常工作。

    谢谢

    【讨论】:

      【解决方案3】:
      SELECT CONVERT(VARCHAR(8), '26052016', 112) AS [YYYYMMDD] from
       C034_PDK_ParallelBillingSourceExtract
      

      【讨论】:

        【解决方案4】:

        这样试试,

        SELECT substring([doc-date], 5, 4) + substring([doc-date], 3, 2) + substring([doc-date], 1, 2) AS [YYYYMMDD]
        FROM C034_PDK_ParallelBillingSourceExtract
        

        【讨论】:

          【解决方案5】:

          有不同的方法可以做到这一点。

          最好的方法是使用substring 方法,因为您知道字符位置将保持不变。

          举例

          假设您的日期是 - 31122015

          使用substring 方法选择日期部分并将它们连接起来

          select  SUBSTRING('31122015',5,4) + SUBSTRING('31122015',3,2) + SUBSTRING('31122015',1,2)
          

          结果将是 - 20153112

          【讨论】:

          • 这将导致 YYYYDDMM,而 OP 要求 YYYYMMDD
          • 我的错误兄弟,感谢您指出。为了获得所需的结果,只需交换第 2 和第 3 替代方法的位置。所以正确的查询应该是 - select SUBSTRING([doc-date],5,4) + SUBSTRING([doc-date],3,2) + SUBSTRING([doc-date],1,2)
          【解决方案6】:

          自 SQL Server 2016 以来,我们为此提供了几个方便的工具:

          使用 DATEFROMPARTS 和 SUBSTRING 将奇数日期格式从 Varchar 中的任何排列转换为实际日期:

          SELECT DATEFROMPARTS(SUBSTRING('31122015',5,4), SUBSTRING('31122015',3,2), SUBSTRING('31122015',1,2))
          

          使用 FORMAT 将实际日期转换为 YYYYMMDD:

          SELECT FORMAT(MyDate, 'yyyyMMdd')
          

          注意 yyyyMMdd,这是 MS SQL 中唯一区分大小写的部分。小写 mm 是“分钟”,大写 MM 是“月”,大写 YYYY 或 DD 什么都不是,只会在输出中添加字母!

          【讨论】:

            猜你喜欢
            • 2020-10-04
            • 1970-01-01
            • 2013-04-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-12
            • 1970-01-01
            • 2014-07-03
            相关资源
            最近更新 更多