Sql server 将年和月varchar转换为日期

Sql server 将年和月varchar转换为日期,sql-server,sql-server-2008,sql-server-2008-r2,sql-server-2012,Sql Server,Sql Server 2008,Sql Server 2008 R2,Sql Server 2012,我有一张月、年为varchar的桌子。我意识到这是一个大错误。因为太快了 以这种方式进行查询很复杂 Year Month Productname 2013 11 ACB 2013 11 CDE 现在,我想添加另一个名为date的列,并将这些Year Month作为日期存储到现有表中 Year Month ProductName Date 2013 11 ACB 2013-11-01

我有一张月、年为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
是否有一种方法可以对现有表的所有列执行此操作


请让我知道

如果我理解这个问题,应该只是把事情串联起来

例如:

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

如果我理解这个问题的话,这应该只是一个连接问题

例如:

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

如果我理解这个问题的话,这应该只是一个连接问题

例如:

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

如果我理解这个问题的话,这应该只是一个连接问题

例如:

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

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

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

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

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

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

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

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

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

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

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

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

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

如果使用此方法,请确保先清除数据。
[Month]='11'
的行将变为一月,而不是十一月。一般来说,试图通过串接字符串来构造日期,然后对其进行解析,这是一种容易产生非常讨厌的无声bug的方法。使用诸如
DATEFROMPARTS()
之类的构造函数更安全。如果使用此方法,请确保先清除数据。
[Month]='11'
的行将变为一月,而不是十一月。一般来说,试图通过串接字符串来构造日期,然后对其进行解析,这是一种容易产生非常讨厌的无声bug的方法。使用诸如
DATEFROMPARTS()
之类的构造函数更安全。如果使用此方法,请确保先清除数据。
[Month]='11'
的行将变为一月,而不是十一月。一般来说,试图通过串接字符串来构造日期,然后对其进行解析,这是一种容易产生非常讨厌的无声bug的方法。使用诸如
DATEFROMPARTS()
之类的构造函数更安全。如果使用此方法,请确保先清除数据。
[Month]='11'
的行将变为一月,而不是十一月。一般来说,试图通过串接字符串来构造日期,然后对其进行解析,这是一种容易产生非常讨厌的无声bug的方法。使用诸如
DATEFROMPARTS()
之类的构造函数更安全。
SET [Date] = DATEFROMPARTS([Year],[Month],1)