Sql server 将年和月varchar转换为日期
我有一张月、年为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
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)