良好的口碑是企业发展的动力
在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余家合作企业