将年和月varchar转换为日期

时间:2014-01-31 20:07:07

标签: 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
   2013   11        CDE          2013-11-01

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

请告诉我

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

例如:

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

答案 2 :(得分:0)

SET [Date] = DATEFROMPARTS([Year],[Month],1)