如何将invoice表中缺位年份的错误日期转换为datetime并存入invoicedate2列
修复Invoice表中日期格式错误并转换为datetime类型
我有一张名为invoice的表,包含invoiceno、invoicedate、invoicedate2列。由于失误,invoicedate列的数据类型被设置为nvarchar(10),导致存入的日期数据格式错误,例如"May 1 202"(年份缺失最后一位)。需要将这些数据修正为2024年的正确日期格式,并以datetime格式存入invoicedate2列,预期转换效果:May 1 202 → 2024-05-01
解决方案
1. 先验证转换结果(可选)
执行以下SELECT语句,确认修正后的日期格式是否符合预期:
SELECT invoicedate, CONVERT(datetime, REPLACE(invoicedate, '202', '2024'), 109) AS corrected_date FROM invoice WHERE invoicedate LIKE '%202'
2. 执行更新操作
确认结果无误后,运行UPDATE语句将修正后的日期写入invoicedate2列:
UPDATE invoice SET invoicedate2 = CONVERT(datetime, REPLACE(invoicedate, '202', '2024'), 109) WHERE invoicedate LIKE '%202'
代码说明
REPLACE(invoicedate, '202', '2024'):把错误的年份前缀"202"替换为完整的"2024",得到格式正确的日期字符串(如May 1 2024)CONVERT(datetime, ..., 109):使用SQL Server的样式109(对应Mon dd yyyy格式)将字符串转换为datetime类型WHERE invoicedate LIKE '%202':仅针对年份缺失最后一位的错误记录进行更新,避免修改正常数据
内容的提问来源于stack exchange,提问作者Pusidu Adikaram
相关产品推荐
相关产品推荐

