【问题标题】:Converting date to YYYYMMDD format in SQL Server 2016 from T format在 SQL Server 2016 中将日期从 T 格式转换为 YYYYMMDD 格式
【发布时间】:2020-10-04 05:43:39
【问题描述】:

我在 SQL 表中有一个日期列,其中的值以以下格式存储。

2020-04-07T02:41:49

我需要获取 YYYYMMDD 格式的日期,例如:20200407

我尝试使用以下语句,但它在转换时引发错误。

SELECT
    CONVERT(DATETIME, SUBSTRING(CAST('2020-04-07T02:41:49' AS varchar), 1, 8)) 

SELECT 
    LEFT(4, CAST('2020-04-05T08:05:47' AS nvarchar)) 

错误:

从字符串转换日期和/或时间时转换失败

有人可以帮忙吗?

谢谢。

【问题讨论】:

  • 如果列是字符串类型,改进架构并为其使用正确的数据类型,这将是一些日期/时间类型。

标签: sql sql-server


【解决方案1】:

您可以使用try_convert(date,...)

示例

Select WithFormat = format(try_convert(date,'2020-04-07T02:41:49'),'yyyyMMdd')
      ,OrNot      = convert(varchar(10),try_convert(date,'2020-04-07T02:41:49'),112)
      ,OrString   = replace(left('2020-04-07T02:41:49',10),'-','')

退货

WithFormat  OrNot      OrString
20200407    20200407   20200407

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2014-07-03
    • 1970-01-01
    • 2013-08-17
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多