良好的口碑是企业发展的动力
在Oracle数据库中,将 TIMESTAMP
类型转换为 DATE
类型时,会丢失小数秒(fractional seconds)的精度,因为 DATE
类型仅精确到秒。以下是两种常用方法:
CAST
函数
|
SELECT CAST(your_timestamp_column AS DATE) AS converted_date |
|
FROM your_table; |
Oracle允许在需要 DATE
类型的上下文中直接使用 TIMESTAMP
,系统会自动截断小数秒:
|
SELECT your_timestamp_column AS converted_date |
|
FROM your_table; |
特性 | TIMESTAMP | DATE |
---|---|---|
精度 | 精确到秒的小数部分(如毫秒) | 仅精确到秒 |
存储范围 | 更大(支持纳秒) | 较小(1753-01-01 至 9999-12-31) |
转换行为 | 显式/隐式截断小数秒 | 直接兼容 |
|
-- 原始TIMESTAMP(含小数秒) |
|
SELECT SYSTIMESTAMP FROM DUAL; |
|
-- 输出示例:28-MAY-25 10.30.45.123456 AM |
|
|
|
-- 转换为DATE |
|
SELECT CAST(SYSTIMESTAMP AS DATE) FROM DUAL; |
|
-- 输出示例:28-MAY-25 10.30.45 AM(小数秒被截断) |
.123456
)会永久丢失。TIMESTAMP
包含时区(TIMESTAMP WITH TIME ZONE
),需先转换为 TIMESTAMP
再转 DATE
,或使用 AT TIME ZONE
调整时区后再转换。根据需求选择合适方法,显式 CAST
更推荐以明确意图。
全天候在线客服支持
10年互联网服务经验
全国300余家服务机构
1000余家合作企业