You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:将nvarchar(max)类型的日期时间数据转换为datetime类型

解决nvarchar日期转datetime的问题

你的数据是日/月/年 时分秒格式,直接转换失败是因为SQL Server默认的日期解析逻辑(月/日/年)无法识别日大于12的情况,以下是可行的解决方法:

1. 直接转换单条数据

使用CONVERT函数并指定格式代码103(对应英国/法国日期格式:dd/mm/yyyy),可以正确解析带时间的字符串:

SELECT CONVERT(datetime, ReportDateTime, 103) AS ConvertedDateTime
FROM YourTableName;

2. 批量转换并替换原列

如果需要永久将列类型改为datetime,可以按以下步骤操作:

-- 1. 添加一个临时datetime类型的列
ALTER TABLE YourTableName ADD Temp_DateTime datetime;

-- 2. 将原nvarchar数据转换后写入新列
UPDATE YourTableName
SET Temp_DateTime = CONVERT(datetime, ReportDateTime, 103);

-- 3. 验证转换无误后,删除原nvarchar列
ALTER TABLE YourTableName DROP COLUMN ReportDateTime;

-- 4. 将临时列重命名为原列名
EXEC sp_rename 'YourTableName.Temp_DateTime', 'ReportDateTime', 'COLUMN';

3. 排查无效数据

如果存在格式错误的行,使用TRY_CONVERT函数可以避免整体报错,同时筛选出转换失败的行以便修正:

SELECT 
    ReportDateTime AS InvalidDateString
FROM YourTableName
WHERE TRY_CONVERT(datetime, ReportDateTime, 103) IS NULL;

内容的提问来源于stack exchange,提问作者Imran Aslam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:05:46