【问题标题】:How to convert a date 15-May-2019 in SQL to 2019/05/15 using PATINDEX如何使用 PATINDEX 将 SQL 中的日期 15-May-2019 转换为 2019/05/15
【发布时间】:2020-02-21 17:36:42
【问题描述】:

我需要在 SQL 中转换日期。日期为15-May-2019,应显示为2019/05/15

这是我目前的代码

CASE WHEN WHEN LEN(AgeGroup) > 1 THEN PATINDEX ('%[A-Z]%', date)

我不完全确定如何使用Patindex。有人可以帮我解决这个问题吗?

【问题讨论】:

  • patindex()的使用说明这是SQL Server,所以加了标签。
  • 改为存储正确的类型 - date。日期没有格式,它们是二进制值。一旦你有了正确的类型,你就可以使用FORMAT,例如FORMAT(someDate,'YYYY/MM/DD')

标签: sql sql-server date converters patindex


【解决方案1】:

PATINDEX 有点矫枉过正。

试试:

SELECT FORMAT(
      TRY_PARSE('15-May-2019' AS DATE USING 'en-US')
, 'yyyy/MM/dd')
  • TRY_PARSE 使用 English 文化将字符串解析为 DATE。
  • FORMAT是精确控制输出

【讨论】:

    【解决方案2】:

    使用下面的代码,你可以参考其他格式的链接。https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

    SELECT CONVERT(varchar,(cast('15-may-2019' as date)), 111)

    【讨论】:

      【解决方案3】:

      我建议只转换为 date 数据类型:

      select try_convert(date, '15-May-2019')
      

      如果你想用斜杠,你可以生成一个字符串:

      select replace(convert(varchar(10), try_convert(date, '15-May-2019'), 120), '-', '/')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多