【问题标题】:converting Year and Month varchar to date将年份和月份 varchar 转换为日期
【发布时间】:2014-02-01 04:22:47
【问题描述】:

我有一张表,其中 Month 、 Year 为 varchar。我意识到这是一个很大的错误。因为它变得太 这种方式查询起来很复杂。

 Year Month Productname 
      2013  11      ACB
      2013  11      CDE

我现在想添加另一个名为 date 的列并将这些 Year Month 作为日期存储到我现有的表中

   Year  Month   ProductName     Date
   2013   11        ACB          2013-11-01
   2013   11        CDE          2013-11-01

有没有办法可以对现有表的所有列执行此操作??

请告诉我

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012


    【解决方案1】:

    将您的月份和年份列转换为用“-”连接的字符串,并在末尾添加“-01”。然后转换为日期。

    UPDATE t
    SET t.[Date] = convert(date, convert(varchar(4), 
                           t.[Year]) + '-' + convert(varchar(2), t.[Month]) + '-01')
    FROM Table t
    

    这将为表中的所有记录创建一个日期。

    【讨论】:

    • 如果您使用此方法,请确保先清理数据。 [Month] = ' 11' 的行将变为一月,而不是十一月。作为一般规则,尝试通过连接字符串然后解析它们来构造日期是获得非常讨厌的无声错误的简单方法。使用像DATEFROMPARTS() 这样的构造函数更安全。
    【解决方案2】:

    如果我理解问题,这应该只是连接事物的问题。

    例如:

    update table1 set [date] = convert(date, month + '-01-' + year)
    

    【讨论】:

      【解决方案3】:
      SET [Date] = DATEFROMPARTS([Year],[Month],1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-24
        • 1970-01-01
        • 1970-01-01
        • 2021-04-09
        • 1970-01-01
        • 2017-06-02
        • 1970-01-01
        • 2017-01-27
        相关资源
        最近更新 更多