从CSV文件导入日期列,其中字符串值显示为
<表类>
日期
tbody><<tr>44705 44704 44703 表类>
select cast (44705-1 as smalldatetime) gives 2022-05-25 00:00
因此,您可以使用上面的命令更新列。
见https://dbfiddle.uk/?rdbms=sqlserver_2017&小提琴= dc24abb3025e0f3796e7d978ba406be3
新的fiddle with update语句,这一行将更新所有行,按照测试。
update #test
set pdate = cast(dateadd(d,tdate-2,'1899-12-30') as smalldatetime)
要将字符串转换为日期,我们可以添加临时日期列并填充它,删除旧列并将新列重命名为旧列
alter table TableName add NewColumnName date null; --create temporary column
update TableName set NewColumnName =dateadd(d,cast(cast([date] as float) as int)-2,'1899-12-30') --fill it
alter table TableName drop column [date]--delete old column
EXEC sp_RENAME 'TableName.NewColumnName' , 'date', 'COLUMN'--rename new one to old one