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

如何让Oracle的to_timestamp()支持逗号作为时间戳小数分隔符

解决Oracle TO_TIMESTAMP接受逗号作为小数秒分隔符的问题

你可以通过两种方式让TO_TIMESTAMP接受逗号作为小数秒的分隔符,无需手动修改数千条INSERT语句:

方法一:修改会话级NLS参数(推荐批量处理)

在执行所有INSERT语句前,先执行以下SQL设置会话的数值格式参数:

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';

这个参数的格式为<小数分隔符><千位分隔符>,将小数分隔符设为逗号后,TO_TIMESTAMP会自动把字符串中的逗号识别为小数秒的分隔符,匹配你指定的RR/MM/DD HH24:MI:SSXFF格式串,原有INSERT语句无需修改即可正常执行。

方法二:在TO_TIMESTAMP中直接指定NLS参数

如果不想修改会话设置,可以在每个TO_TIMESTAMP调用中添加第三个参数,明确指定小数分隔符:

to_timestamp(
    '21/01/17 23:34:50,000000000',
    'RR/MM/DD HH24:MI:SSXFF',
    'NLS_NUMERIC_CHARACTERS='',.'''
)

注意这里的单引号需要用两个单引号转义,确保Oracle能正确解析参数内容。

验证效果

执行上述任一设置后,你的原有INSERT语句将不再抛出ORA-01830错误,时间戳字符串会被正确转换为Oracle的TIMESTAMP类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:25:02