【问题标题】:SQL Server : convert date to YYYMMDD?SQL Server:将日期转换为 YYYYMMDD?
【发布时间】:2016-06-29 23:50:08
【问题描述】:

我在 SQL Server 的某一列中有一个日期,示例日期是:

10/02/2012
23/11/2012
13/01/2012
10/02/2012
10/02/2012

我尝试了将日期转换为YYYYMMDD的方法

DECLARE @v DATE= '1/11/2012'

SELECT CONVERT(VARCHAR(10), @v, 112)

我在同一个表中有另一列我想以YYYYMMDD 格式更新日期,这里的问题是日期不正确 并抛出错误

DECLARE @v DATE= '23/11/2012'

SELECT CONVERT(VARCHAR(10), @v, 112)

消息 241,第 16 级,状态 1,第 1 行
从字符串转换日期和/或时间时转换失败。

感谢任何帮助,日期将以 dd/mm/yyyy 或 mm/dd/yyyy 的任何顺序出现,它应该能够正确转换它

【问题讨论】:

  • 如果你得到字符串并且它与 dd/mm/yyyy 和 mm/dd/yyyy 不一致,那么你正在打一场失败的战斗。你怎么知道哪个是哪个? 2016 年 12 月 10 日怎么样?那是哪种“格式”,您怎么知道?这就是为什么您永远不应该将日期存储为 varchar。对于这种类型的数据,有一种数据类型要好得多。它被称为日期或日期时间。
  • A) 您将日期存储为哪种列类型? B)如果您不知道开始日期的格式,您将如何能够可靠地格式化输出?例如。 10/04/2016 = 10 月还是 4 月?

标签: sql-server date


【解决方案1】:

您可以尝试使用以下格式将一种数据类型转换为另一种数据类型。(dd/mm/yyyy 到 yyyy/mm/dd)

CONVERT(data_type(length),expression,style)

以及像下面这样的更新

UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary

【讨论】:

    【解决方案2】:

    如果您想在 SQL Server 中插入日期,您需要遵循某些格式。您可以关注yyyy-MM-ddMM-dd-yyyy

    对于您的问题,如果您遵循MM-dd-yyyy 这种格式,并且如果您使用 SQL Server 2012 或更高版本,您可以使用它并获得结果

    DECLARE @v DATE = '11/23/2012';
    
    SELECT FORMAT ( @v, 'yyyy/MM/dd', 'en-US' )  
    

    参考这些链接 FORMAT (Transact-SQL) , SQL Server date format function

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      相关资源
      最近更新 更多