前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oracle 操作时间的函数总结

oracle 操作时间的函数总结

原创
作者头像
炒香菇的书呆子
发布2024-04-27 23:28:25
3890
发布2024-04-27 23:28:25
举报

下面是一些使用 Oracle 数据库中处理时间的函数的 SQL 查询:

  1. SYSDATE - 获取当前日期和时间:SELECT SYSDATE FROM dual;
图片.png
图片.png
  1. CURRENT_DATE - 获取当前日期:SELECT CURRENT_DATE FROM dual;
图片.png
图片.png
  1. SYSTIMESTAMP - 获取当前日期和时间及时区信息:
代码语言:sql
复制
SELECT SYSTIMESTAMP FROM dual;
图片.png
图片.png
  1. CURRENT_TIMESTAMP - 获取当前日期和时间及时区信息:SELECT CURRENT_TIMESTAMP FROM dual;
图片.png
图片.png

可以看出

  1. SYSDATE 和 CURRENT_DATE 输出的值都是一样的
  2. SYSTIMESTAMP 和 CURRENT_TIMESTAMP 输出的值都是一样的
  3. SYSTIMESTAMP 比起 SYSDATE 会额外输出毫秒值时区,其他一样
  4. CURRENT_TIMESTAMP 比起 CURRENT_DATE 会额外输出毫秒值时区,其他一样
代码语言:sql
复制
SELECT SYSDATE, CURRENT_DATE, SYSTIMESTAMP, CURRENT_TIMESTAMP FROM DUAL
图片.png
图片.png
  1. EXTRACT - 提取日期/时间的一部分:

例如通过EXTRACT 函数提取年、月、日

代码语言:sql
复制
SELECT SYSDATE, EXTRACT(YEAR FROM SYSDATE), EXTRACT(MONTH FROM SYSDATE), EXTRACT(DAY FROM SYSDATE) FROM DUAL
图片.png
图片.png

例如通过EXTRACT 函数提取时、分、秒

注意:

  1. 获取时分秒,不能用SYSDATE,只能用SYSTIMESTAMP
  2. 获取时分秒,不能用CURRENT_DATE,只能用CURRENT_TIMESTAMP
代码语言:sql
复制
SELECT SYSTIMESTAMP, EXTRACT(HOUR FROM SYSTIMESTAMP), EXTRACT(minute from SYSTIMESTAMP), EXTRACT(second from SYSTIMESTAMP) FROM DUAL
```
图片.png
图片.png
  1. ADD_MONTHS - 向日期添加指定月数:SELECT ADD_MONTHS(SYSDATE, 3) AS ThreeMonthsLater FROM dual;
图片.png
图片.png
  1. MONTHS_BETWEEN - 计算两个日期之间的月数差:

注意:这里只有 MONTHS_BETWEEN 有效。YEARS_BETWEENDAYS_BETWEEN 这两个都是无效函数

代码语言:sql
复制
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2023-01-01', 'YYYY-MM-DD')) AS MonthsDifference FROM dual;
图片.png
图片.png
  1. NEXT_DAY - 获取下一个指定星期几的日期:SELECT SYSDATE, NEXT_DAY(SYSDATE, 1) AS n1, NEXT_DAY(SYSDATE, 2) AS n2, NEXT_DAY(SYSDATE, 3) AS n3, NEXT_DAY(SYSDATE, 4) AS n4, NEXT_DAY(SYSDATE, 5) AS n5, NEXT_DAY(SYSDATE, 6) AS n6, NEXT_DAY(SYSDATE, 7) AS n7 FROM DUAL
图片.png
图片.png
  1. LAST_DAY - 获取月份的最后一天:
代码语言:sql
复制
SELECT LAST_DAY(SYSDATE) AS LastDayOfMonth FROM dual;
图片.png
图片.png
  1. ROUND - 对日期进行四舍五入:
代码语言:sql
复制
SELECT SYSDATE, ROUND(SYSDATE, 'MONTH'), ROUND(TO_DATE('2024-04-10 20:12:30', 'YYYY-MM-DD HH24:MI:SS'), 'MONTH') FROM DUAL;
图片.png
图片.png
  1. TRUNC - 截断日期到指定精度:
代码语言:sql
复制
SELECT TRUNC(SYSDATE, 'YY'), TRUNC(SYSDATE, 'MM'), TRUNC(SYSDATE, 'HH'), TRUNC(SYSDATE, 'mi') FROM DUAL;

注意:TRUNC 可以截取到 年、月、日、时、分,但是没有秒

图片.png
图片.png
  1. TO_CHAR - 将日期/时间转换为字符串:
代码语言:sql
复制
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS FormattedDate FROM DUAL;
图片.png
图片.png
  1. TO_DATE - 将字符串转换为日期:
代码语言:sql
复制
SELECT TO_DATE('2024-04-20', 'YYYY-MM-DD') AS DateFromString FROM DUAL;
图片.png
图片.png
  1. TO_TIMESTAMP - 将字符串转换为时间戳:
代码语言:sql
复制
SELECT TO_TIMESTAMP('2024-04-20 12:34:56', 'YYYY-MM-DD HH24:MI:SS') AS TimestampFromString FROM DUAL;
图片.png
图片.png

TO_DATETO_TIMESTAMP 效果是一样的

代码语言:sql
复制
SELECT TO_DATE('2024-04-20 12:34:56', 'YYYY-MM-DD HH24:MI:SS') AS DateFmt, 
	   TO_TIMESTAMP('2024-04-20 12:34:56', 'YYYY-MM-DD HH24:MI:SS') AS TimestampFmt
FROM DUAL;
图片.png
图片.png
  1. NEW_TIME - 将一个时区的时间转换为另一个时区的时间:
代码语言:sql
复制
SELECT NEW_TIME(SYSDATE, 'AST', 'PST') AS ConvertedTime FROM DUAL;
图片.png
图片.png

所有的时区如下

图片.png
图片.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档