Oracl-时间日期总结

1.日期时间间隔操作

-- 当前时间减去7分钟的时间
SELECT SYSDATE, SYSDATE - INTERVAL '7' MINUTE FROM dual;
-- 当前时间减去7小时的时间
SELECT SYSDATE - INTERVAL '7' HOUR FROM dual;
-- 当前时间减去7天的时间
SELECT SYSDATE - INTERVAL '7' DAY FROM dual;
-- 当前时间减去7月的时间
SELECT SYSDATE, SYSDATE - INTERVAL '7' MONTH FROM dual;
-- 当前时间减去7年的时间
SELECT SYSDATE, SYSDATE - INTERVAL '7' YEAR FROM dual;
-- 时间间隔乘以一个数字
SELECT SYSDATE, SYSDATE - 8 * INTERVAL '2' HOUR FROM dual;
-- 查询昨天时间
SELECT TO_CHAR(SYSDATE -1, 'yyyy-mm-dd hh24:mi:ss') FROM dual;

2.日期到字符操作

-- 取当前系统时间
SELECT SYSDATE FROM DUAL;
-- 取当前日期
SELECT TRUNC(SYSDATE) FROM dual;
-- 取当前月的第一天
SELECT TRUNC(SYSDATE, 'MM') FROM dual;
-- 取当年的元旦
SELECT TRUNC(SYSDATE, 'YYYY') FROM dual;
-- 取当前时间秒部分
SELECT TO_CHAR(SYSDATE, 'ss') FROM dual;
-- 取当前时间分钟部分
SELECT TO_CHAR(SYSDATE, 'mi') FROM dual;
-- 取当前时间秒小时部分
SELECT TO_CHAR(SYSDATE, 'HH24') FROM dual;
-- 取当前时间日期部分
SELECT TO_CHAR(SYSDATE, 'DD') FROM dual;
-- 取当前时间月部分
SELECT TO_CHAR(SYSDATE, 'MM') FROM dual;
-- 取当前时间年部分
SELECT TO_CHAR(SYSDATE, 'YYYY') FROM dual;
-- 取当前时间是一个月中的第几周(从1日开始算)
SELECT TO_CHAR(SYSDATE, 'w') FROM dual;
-- 取当前时间是一年中的第几周(从1.1开始算)
SELECT TO_CHAR(SYSDATE, 'ww') FROM dual;
-- 取当前时间是一年中的第几周(按实际日历的)
SELECT TO_CHAR(SYSDATE, 'iw') FROM dual;
-- 取当前时间是一周的第几天,从星期天开始,周六结束
SELECT TO_CHAR(SYSDATE, 'd') FROM dual;
-- 取当前日是星期几,和数据库设置的字符集有关,会输出'Tuesday'
SELECT TO_CHAR(SYSDATE, 'day') FROM dual;
-- 当前日是一年中的第几天
SELECT TO_CHAR(SYSDATE, 'ddd') FROM dual;
-- 时间转对应格式的字符串时间
SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss') FROM dual;
SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh:mi:ss') FROM dual;
SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyy-ddd hh:mi:ss') FROM dual;
SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyy-mm iw-d hh:mi:ss') FROM dual;
  1. 字符到日期操作
-- 具体用法和上面的to_char差不多
SELECT TO_DATE('2003-10-17 21:15:37', 'yyyy-mm-dd hh24:mi:ss') FROM dual;
  1. trunk/ ROUND函数的使用
SELECT TRUNC(SYSDATE, 'YEAR') FROM dual;
SELECT TRUNC(SYSDATE) FROM dual;
SELECT TO_CHAR(TRUNC(SYSDATE, 'YYYY'), 'YYYY') FROM dual;

5.Oracle有毫秒级的数据类型(DataTime类型)

--返回当前时间 年月日小时分秒毫秒
SELECT TO_CHAR(CURRENT_TIMESTAMP(5), 'DD-MON-YYYY HH24:MI:SSxFF') FROM dual;
--返回当前 时间的秒毫秒,可以指定秒后面的精度(最大=9)
SELECT TO_CHAR(CURRENT_TIMESTAMP(9), 'MI:SSxFF') FROM dual;
  1. Oracle中日期比较大小
--如果字段本身就是date型
TO_CHAR(DATE, 'yyyy-mm') <= TO_CHAR(SYSDATE, 'yyyy-mm');
--如果字段本身不是date型
(TO_DATE(DATE, 'yyyy-mm'), 'yyyy-mm') <= TO_CHAR(TO_DATE('2022-02-11 10:58:28'), 'yyyy-mm');
-- oracle的between and函数会包含前后边界,除非该边界被另外一个分组占用
SELECT 1 FROM DUAL WHERE TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss') BETWEEN '2022-02-12 00:00:00' AND '2022-02-12 23:59:59';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Windyº

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值