Oracle 和 MySQL 中的日期类型比较

Oracle 和 MySQL 都提供了多种日期和时间数据类型,但它们在实现和功能上有一些差异。以下是两者的主要日期类型对比:

Oracle 日期类型

  1. DATE
    • 存储日期和时间(精确到秒)
    • 格式:YYYY-MM-DD HH24:MI:SS
    • 示例:TO_DATE('2023-11-15 14:30:00', 'YYYY-MM-DD HH24:MI:SS')
  2. TIMESTAMP
    • 比 DATE 更精确,可包含小数秒(最多9位)
    • 示例:TIMESTAMP '2023-11-15 14:30:00.123456789'
  3. TIMESTAMP WITH TIME ZONE
    • 包含时区信息
    • 示例:TIMESTAMP '2023-11-15 14:30:00 -05:00'
  4. TIMESTAMP WITH LOCAL TIME ZONE
    • 存储时转换为数据库时区,检索时转换回用户时区
  5. INTERVAL YEAR TO MONTH
    • 存储年-月间隔
    • 示例:INTERVAL '1-2' YEAR TO MONTH (1年2个月)
  6. INTERVAL DAY TO SECOND
    • 存储日-秒间隔
    • 示例:INTERVAL '5 12:30:45.123' DAY TO SECOND (5天12小时30分45.123秒)

MySQL 日期类型

  1. DATE
    • 仅存储日期(不包含时间)
    • 格式:YYYY-MM-DD
    • 示例:'2023-11-15'
  2. TIME
    • 仅存储时间(可包含微秒)
    • 格式:HH:MM:SS[.fraction]
    • 示例:'14:30:00''14:30:00.123456'
  3. DATETIME
    • 存储日期和时间(精确到秒或微秒)
    • 格式:YYYY-MM-DD HH:MM:SS[.fraction]
    • 示例:'2023-11-15 14:30:00''2023-11-15 14:30:00.123456'
  4. TIMESTAMP
    • 存储日期和时间(1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC)
    • 自动转换为 UTC 存储,检索时转换回当前时区
    • 示例:TIMESTAMP(6) 可存储微秒
  5. YEAR
    • 仅存储年份(1901-2155)
    • 示例:YEAR(4) 存储为4位数年份

主要差异

  1. 精度
    • Oracle 的 TIMESTAMP 支持最多9位小数秒
    • MySQL 的 DATETIME/TIMESTAMP 支持最多6位小数秒
  2. 时区处理
    • Oracle 有专门的时区感知类型(TIMESTAMP WITH TIME ZONE)
    • MySQL 的 TIMESTAMP 会自动转换时区,DATETIME 不会
  3. 范围
    • Oracle DATE 范围:公元前4712年到公元9999年
    • MySQL TIMESTAMP 范围较小(1970-2038年)
  4. 存储
    • Oracle DATE 固定占用7字节
    • MySQL DATETIME 占用8字节(无小数秒),TIMESTAMP 占用4字节(无小数秒)

示例用法

Oracle:

复制代码
CREATE TABLE events (
    event_id NUMBER,
    event_date DATE,
    event_timestamp TIMESTAMP,
    event_tz TIMESTAMP WITH TIME ZONE
);

MySQL:

复制代码
CREATE TABLE events (
    event_id INT,
    event_date DATE,
    event_datetime DATETIME(6),
    event_timestamp TIMESTAMP(6)
);
复制代码
选择哪种类型取决于您的具体需求,包括是否需要时区支持、所需精度以及数据范围等因素。
相关推荐
瀚高PG实验室16 分钟前
逻辑导入导出(pg_dump/pg_restore)用法2-导入到不同的schema或tablespace
数据库·瀚高数据库
whyfail21 分钟前
前端数据存储新选择:IndexedDB与Dexie.js技术指南
前端·javascript·数据库
煎蛋学姐24 分钟前
SSM校园快递系统q9061(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·开题报告·java 开发·校园信息化·ssm 框架
元亓亓亓35 分钟前
考研408--操作系统--day11--文件管理&逻辑物理结构&目录&存储空间管理
数据库·考研·文件管理·408
cly11 小时前
Ansible自动化(十三):调试与优化
数据库·自动化·ansible
QQ_4376643141 小时前
redis相关命令讲解及原理
数据库·redis·缓存
萤丰信息1 小时前
开启园区“生命体”时代——智慧园区系统,定义未来的办公与生活
java·大数据·运维·数据库·人工智能·生活·智慧园区
TDengine (老段)2 小时前
TDengine Rust 连接器进阶指南
大数据·数据库·物联网·rust·时序数据库·tdengine·涛思数据
二哈喇子!2 小时前
MySQL数据库操作命令【SQL语言】
数据库·sql·视图与索引
China_Yanhy2 小时前
AWS S3 深度配置指南:每一栏每个选项有什么作用
java·数据库·aws