【问题标题】:How to convert from one date format to another, in Microsoft SQL server?如何在 Microsoft SQL Server 中从一种日期格式转换为另一种日期格式?
【发布时间】:2011-11-03 08:19:39
【问题描述】:

我有一个以“MM/DD/YYYY”(101) 格式存储的日期,我想将其转换为“DD/MM/YYYY”(103)。源日期(101 格式的日期)最初存储为 varchar,所以我猜您首先需要将其转换为日期类型,然后才能更改其格式。

所以实际上我的问题是,“如何更改存储为 varchar 的日期格式?”。

【问题讨论】:

  • 为什么如果是DATETIME,它是否存储为VARCHAR???

标签: sql-server-2008


【解决方案1】:

试试这个...

select CONVERT(varchar(10), CONVERT(datetime, '12/31/2011', 101), 103)

【讨论】:

  • 最后我想要一个 DATE 类型的值。所以我做了什么,我用 CAST 包装了整个转换,但结果是 YYYY-MM-DD 格式的日期。
  • SELECT CAST(CONVERT(VARCHAR(10), CONVERT(DATETIME, '12/31/2011',101),103) AS DATE)
  • 但这满足了您最初的要求,对吧?所以实际上我的问题是,“如何更改存储为 varchar 的日期格式?”。
【解决方案2】:

CAST and CONVERT 是你的朋友。特别看一下日期格式代码。

【讨论】:

  • 所以实际上我是使用 SSIS 包将数据从 excel 文件导入到数据库表中。因此,我将导入表中的每一列都设为 varchar(250) 类型,以避免 SSIS 和 SQL 之间的转换问题。
【解决方案3】:

如果您想要一个 DATE 类型的值,则无需使用另一个 CAST 包装整个转换。你可以像

一样直接转换/转换它
select CONVERT(date, CONVERT(datetime, '12/31/2011', 101))

select CONVERT(date, '12/31/2011', 101) 

【讨论】:

    【解决方案4】:

    我使用 Leon Tayson 的答案来修复具有混合日期格式的字段,使用此位置的代码: https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

    /**MM-DD-YYYY to YYYY-MM-DD **/
    UPDATE [DBO].[TABLE]
       SET [DATEFIELD] = CONVERT(varchar(10), CONVERT(datetime, DATEFIELD, 110), 23)
    where DATEFIELD like '__-__-____'
    
    /** excel date serial number to YYYY-MM-DD **/
    UPDATE [DBO].[TABLE]
       SET [DATEFIELD] = dateadd(DAY, convert(bigint, DATEFIELD) , convert(date, '1-1-1900'))
     Where Len(UPDATED_DATE) = 5
    
    /** YYYY to YYYY-MM-DD **/
    UPDATE [DBO].[TABLE]
    SET [DATEFIELD] = DATEFIELD + '-01-01'
    Where Len(DATEFIELD) = 4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2017-08-27
      相关资源
      最近更新 更多