为何时间字段后存在大量零值?Oracle SQL技术问询
问题:Oracle插入APPOINTMENT表后,查询结果中A_DATETIME字段时间部分出现大量零值的原因?
插入语句:
INSERT INTO APPOINTMENT (A_DATETIME, CLIENT_ID, PET_ID, VN_ID) VALUES (TO_DATE('2023-01-20 09:30', 'YYYY-MM-DD hh24:mi'), 1001, 10001, 801)
查询结果:
APP_ID A_DATETIME CLIENT_ID PET_ID VN_ID ---------- ---------------------------- ---------- ---------- ---------- 1 20-JAN-23 09.30.00.000000000 1001 10001 801
原因分析
- 字段类型不匹配:如果
A_DATETIME是Oracle的TIMESTAMP类型(支持毫秒/微秒精度),但你插入的是TO_DATE()生成的DATE类型数据,DATE仅精确到秒,没有小数秒部分。Oracle自动将DATE转换为TIMESTAMP时,会把缺失的小数秒位用零填充。 - 显示格式设置:即使字段是
DATE类型,若当前会话的日期显示格式配置了小数秒位(比如DD-MON-RR HH24.MI.SS.FF9),查询时Oracle会为DATE类型补零显示这部分不存在的内容,因为DATE本身不包含小数秒信息。
简单总结:要么是字段类型支持微秒但插入的数据仅到秒,要么是显示格式强制显示微秒位,导致不存在的部分被补零。
内容的提问来源于stack exchange,提问作者user20834985
相关产品推荐
相关产品推荐

