T-SQL计算日期列

T-SQL计算日期列,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个TSQL表格,其中一个字段包含YYYYMMDD格式的数据,保存为varchar50; 我想为该字段中的每个相应记录向表中添加一个日期类型列。 有什么想法吗?非常感谢您的帮助 假设您在字段中存储了正确的日期格式,例如您没有“20121433”,此脚本应该适合您: ALTER TABLE your_table ADD your_field_Date DATETIME UPDATE your_table SET your_field_Date = CONVERT(DATETIME, yo

我有一个TSQL表格,其中一个字段包含YYYYMMDD格式的数据,保存为varchar50; 我想为该字段中的每个相应记录向表中添加一个日期类型列。
有什么想法吗?非常感谢您的帮助

假设您在字段中存储了正确的日期格式,例如您没有“20121433”,此脚本应该适合您:

ALTER TABLE your_table
ADD your_field_Date DATETIME

UPDATE your_table 
SET  your_field_Date = CONVERT(DATETIME, your_field_varchar, 112)

ALTER TABLE your_table DROP COLUMN your_field_varchar

你试过什么了吗?我不太明白你的问题。。。是否要将varchar列替换为日期列?可以使用-ALTER TABLE dbo进行替换。YourTable将YourColumnAsDate添加为CONVERTDATE,YourColumn,112;-但真正的问题是,为什么要将日期存储为VARCHAR?为什么当varchar有10个字符长的固定格式时,您会使用VARCHAR50?一个更可靠的长期解决方案是改变您的表以确保。解释@GarethD的建议。请注意,除非您的计算列被持久化,否则您将出现错误,因为它不会验证您的日期,因此您可以创建类似于以下内容的内容-创建表T A VARCHAR10,B AS CONVERTDATE,A,112;插入T A值“20150532”;-正如您所看到的,5月32日被插入,这不是一个有效的日期,如果您运行像SELECT*FROM T这样简单的操作,您将得到一个错误。如果有使用正确类型的列,则在插入时会出现此错误,并在源位置停止无效数据。105不正确。它应该是112,因为原始格式是YYYYMMDD。我以数据作为varchar结束的原因是由于从未正确格式化的平面文件迁移而来。我会试着回复你的回复。再次感谢。