【问题标题】:yyyy-mm-dd hh:mm:ss.sss to ddmmyy in SQL Server proceduresyyyy-mm-dd hh:mm:ss.sss 到 SQL Server 过程中的 ddmmyy
【发布时间】:2018-10-06 16:17:48
【问题描述】:

我正在尝试在 SQL Server 存储过程中将 yyyy-mm-dd hh:mm:ss.sss 转换为 ddmmyy,但无法做到。有人能解决这个问题吗?

还需要 (27-Apr-18) 这种格式吗?

【问题讨论】:

  • 尝试使用FORMAT - SELECT FORMAT(SYSDATETIME(),'MMddyy')(从SQLServer 2012开始)
  • 为什么?您可能对数据类型的工作方式存在根本性的误解。
  • 我已根据所需的结果格式更新了我的答案。
  • @Manu C Rajan 我编辑了我的答案试试我的解决方案。

标签: sql sql-server tsql stored-procedures


【解决方案1】:

更新

一旦您将值设为 Date 数据类型,要获得 dd-MMM-yy 格式,您还可以使用 convertreplace 的组合:

DECLARE @Date as datetime = GETDATE();

SELECT  @Date As Original, 
        REPLACE(CONVERT(char(9), @Date, 6), ' ', '-') As Result

将返回:

Original                Result
01.05.2018 08:08:29     01-May-18

注意:由于所需的结果格式从 mmddyyy 更改为 ddmmyy,我已经更新了我的答案 - 我改变的只是转换样式 - 从 1 到 3。

原答案

如果您的原始值是DateTime 类型,则它没有显示值。您只需要使用convertreplace

DECLARE @Date as datetime = GETDATE();

SELECT  @Date As Original, 
        REPLACE(CONVERT(char(8), @Date, 3), '/', '') As Result

Original                Result
26.04.2018 06:56:19     042618

如果你的原始值是字符串类型,你先将其转换为datetime,然后再转换回具有所需显示格式的字符串:

DECLARE @StringDate as char(23) = '2018-04-26 07:55:43.003'

SELECT @StringDate As Original,  
       REPLACE(CONVERT(char(8), CONVERT(datetime, @StringDate, 120), 3), '/', '') As Result

Original                    Result
2018-04-26 07:55:43.003     042618

在 Sql Server 2012 或更高版本中,您可以使用 Formatdatetime 转换为您想要的任何字符串表示形式,但 Formatconvertreplace 慢,所以如果您正在使用它一张大桌子,您应该考虑改用旧的convert
欲了解更多信息,请阅读 Aaron Bertrand 的FORMAT() is nice and all, but…

【讨论】:

    【解决方案2】:

    OrderDate 是可变的。

    concat(month(OrderDate),DAY(OrderDate),right(YEAR(OrderDate),2))作为日期

    【讨论】:

      【解决方案3】:

      试试这个。

      Replace(CONVERT(VARCHAR(10),CreatedOn,10),'-','')
      

      在上面这行CreatedOn 是列名。

      【讨论】:

      • 101 返回 4 位数年份,您需要去掉 CreatedOn 之后的 )
      【解决方案4】:

      随便用

      SELECT FORMAT(GETDATE(),'ddMMyy')
      

      【讨论】:

        【解决方案5】:

        试试这个:

        SELECT FORMAT(CONVERT(DATETIME,'yyyy-mm-dd hh:mm:ss.sss'), 'ddMMyy')
        

        SELECT FORMAT(CONVERT(DATETIME,column_name), 'ddMMyy')
        

        示例:

        SELECT FORMAT(CONVERT(DATETIME,'2018-04-26 10:20:12.222'), 'ddMMyy')
        

        输出:

        260418
        

        演示:

        http://sqlfiddle.com/#!18/4d22b/36

        【讨论】:

          猜你喜欢
          • 2020-02-24
          • 1970-01-01
          • 2010-12-19
          • 1970-01-01
          • 2017-10-02
          • 1970-01-01
          • 2022-10-13
          • 1970-01-01
          • 2019-08-02
          相关资源
          最近更新 更多