详细分析Oracle日期和时间的基本命令

目录

  • [1. 基本类型](#1. 基本类型)
  • [2. 常用函数](#2. 常用函数)
  • [3. Demo](#3. Demo)

1. 基本类型

Oracle支持不同的日期格式模型,其中包括:

  1. ISO 8601: YYYY-MM-DDTHH:MI:SS,例如2024-06-20T14:30:00
  2. Oracle内部格式: DD-MON-YYYY HH:MI:SS AM,例如20-JUN-2024 02:30:00 PM

DATE: 存储日期和时间,精确到秒

sql 复制代码
CREATE TABLE test_date (col DATE);
INSERT INTO test_date (col) VALUES (TO_DATE('2024-06-20 12:34:56', 'YYYY-MM-DD HH24:MI:SS'));

TIMESTAMP:比DATE类型更精确,可以精确到小数秒

sql 复制代码
CREATE TABLE test_timestamp (col TIMESTAMP);
INSERT INTO test_timestamp (col) VALUES (TO_TIMESTAMP('2024-06-20 12:34:56.789', 'YYYY-MM-DD HH24:MI:SS.FF3'));

INTERVAL YEAR TO MONTH:存储年份和月份的时间间隔

sql 复制代码
CREATE TABLE test_interval_ym (col INTERVAL YEAR TO MONTH);
INSERT INTO test_interval_ym (col) VALUES (INTERVAL '2-3' YEAR TO MONTH);

INTERVAL DAY TO SECOND:存储天、小时、分钟、秒以及小数秒的时间间隔

sql 复制代码
CREATE TABLE test_interval_ds (col INTERVAL DAY TO SECOND);
INSERT INTO test_interval_ds (col) VALUES (INTERVAL '5 12:34:56.789' DAY TO SECOND);

2. 常用函数

  • SYSDATE :返回当前系统日期和时间。SELECT SYSDATE FROM dual;

  • CURRENT_TIMESTAMP :返回当前系统时间戳:SELECT CURRENT_TIMESTAMP FROM dual;

  • EXTRACT: 从日期或时间戳中提取特定的部分(如年、月、日、小时等)

sql 复制代码
SELECT EXTRACT(YEAR FROM SYSDATE) AS year FROM dual; # 2024
SELECT EXTRACT(MONTH FROM SYSDATE) AS month FROM dual; # 6
SELECT EXTRACT(DAY FROM SYSDATE) AS day FROM dual; # 20
  • TO_DATE : 将字符串转换为DATE类型:SELECT TO_DATE('2024-06-20', 'YYYY-MM-DD') FROM dual;

  • TO_TIMESTAMP : 将字符串转换为TIMESTAMP类型:SELECT TO_TIMESTAMP('2024-06-20 12:34:56.789', 'YYYY-MM-DD HH24:MI:SS.FF3') FROM dual;

  • TO_CHAR : 将日期或时间戳转换为字符串,可以指定格式:SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;

  • ADD_MONTHS : 给日期加上指定的月份数:SELECT ADD_MONTHS(SYSDATE, 6) AS new_date FROM dual;

  • MONTHS_BETWEEN : 计算两个日期之间的月份数:SELECT MONTHS_BETWEEN(TO_DATE('2024-12-20', 'YYYY-MM-DD'), SYSDATE) AS months_between FROM dual;

  • NEXT_DAY : 返回指定日期之后的第一个指定星期几:SELECT NEXT_DAY(SYSDATE, 'FRIDAY') AS next_friday FROM dual;

  • LAST_DAY : 返回指定月份的最后一天:SELECT LAST_DAY(SYSDATE) AS last_day_of_month FROM dual;

3. Demo

示例的查询有如下:

  • 当前系统日期和时间
sql 复制代码
SELECT SYSDATE, CURRENT_TIMESTAMP FROM dual;
  • 将字符串转换为日期并进行加减操作
sql 复制代码
SELECT TO_DATE('2024-06-20', 'YYYY-MM-DD') + 10 AS new_date FROM dual;
  • 提取日期的不同部分
sql 复制代码
SELECT EXTRACT(YEAR FROM SYSDATE) AS year,
       EXTRACT(MONTH FROM SYSDATE) AS month,
       EXTRACT(DAY FROM SYSDATE) AS day
FROM dual;
相关推荐
QN1幻化引擎1 小时前
# DalinX V8 灵鉴 V2:12维意识评测框架 —— 从 Tononi IIT 到 Friston FEP 的理论统一
数据库·人工智能·算法·机器学习·数据挖掘·agi
聚美智数1 小时前
常见疾病查询-疾病症状—疾病介绍-疾病大全-疾病治疗查询API接口介绍
android·java·数据库
观远数据1 小时前
经营闭环的最后一公里:从看见问题到解决问题之间还差什么
java·开发语言·数据库
延凡科技1 小时前
数字孪生全域智慧园区综合可视化运营平台|延凡科技智园视界解决方案
数据库·人工智能·物联网·数据可视化
SelectDB技术团队1 小时前
大规模集群治理:Apache Doris / SelectDB 的 CCR 无感升级、Colocate Join 与 Bitmap 精确去重
大数据·数据库·人工智能·agent·olap·selectdb·集群治理
卓怡学长9 小时前
w255基于springboot仓库管理系统
java·数据库·spring boot·spring·intellij-idea
J-Tony1111 小时前
【Redis】 Redis 是单线程还是多线程
服务器·数据库·mysql
这个DBA有点耶11 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
IvorySQL11 小时前
PG 日报|SQL/PGQ 图查询基于联接重写机制实现
数据库·人工智能·sql·postgresql·区块链·ivorysql
数聚天成DeepSData15 小时前
遥感农业数据集下载全攻略
数据库·人工智能·深度学习·机器学习·自然语言处理·数据挖掘