首页 > 数据库 >Oracle函数7—日期函数(sysdate 、to_date、add_months、last_day......)

Oracle函数7—日期函数(sysdate 、to_date、add_months、last_day......)

时间:2024-03-21 16:31:10浏览次数:28  
标签:sysdate 03 00 last 函数 -- 2024 date 21

文章目录

1、日期获取(sysdate 、current_date)

1.1 sysdate

Oracle通过sysdate函数实现对计算机操作系统的当前日期和时间获取,即使一张表没有sysdate这个字段,也可以进行业务查询。

例如:获取当前时间:

 select sysdate from dual; 
 --2024-03-21 14:40:52

提示:后面查询的表可以是数据库里面的任意表

1.2 current_date

返回的是当前会话的时区的系统日期,一个依赖于时区。

例如:获取当前时间(东八区):

select current_date from dual;
--2024-03-21 14:44:48

2、设置时间格式(to_date、to_char)

函数to_date 和 to_char作用是相反的, 是将字符串格式转成时间格式,to_char是将时间格式转成字符串格式。

2.1 to_date

例如:将2024/3/21 12:01:14转成标准时间格式,

select to_date('2024/3/21 12:01:14','yyyy-MM-dd HH:MI:SS') from dual
-- 2024-03-21 12:01:14

提示:to_date的参数不仅可以接受字符串的参数,还可以接受数值类型的参数。

例如:

select  to_date(20240321,'yyyy-MM-dd') from dual 
-- 2024-03-21 00:00:00

2.2 to_char

例如:将当前时间转成yyyyMMdd HH:MI:SS与yyyy-MM-dd HH:MI:SS格式,

select to_char(sysdate, 'yyyyMMdd HH:MI:SS') from dual;
--20240321 03:11:51

select to_char(sysdate, 'yyyy-MM-dd HH:MI:SS') from dual;
--2024-03-21 03:12:04

to_char使用的时候可以在format参数中插入字符串,以双引号的方式插入。
例如:

select to_char(sysdate , 'yyyy"年"MM"月"dd"日"')  from  dual;
-- 2024年03月21日

3、两个日期的差(直接加减)

可以直接对两个日期进行相减,返回的数值单位是天。

例如:当前时间100天以后是什么时间

--当天时间
SELECT sysdate  from dual;
--2024-03-21 14:49:53

--100天以后
SELECT sysdate +100 from dual;
--2024-06-29 14:49:53

例如:当前距离五一放假还有多少天

--当前时间
SELECT sysdate  from dual;
--2024-03-21 14:49:53

--距离放假天数
select to_date('2024-05-01','yyyy-MM-dd') - sysdate from dual  
--40.38010416666666666666666666666666666667

4、月份加减(add_months)

向后加用正数,向前加用负数。

例如:三个月后

select add_months(sysdate,3)   from  dual
--2024-06-21 14:57:18

例如:二个月前

select add_months(sysdate,-2) from  dual 
--2024-01-21 14:58:11

5、取某月最后一天(last_day)

计算某个月的最后一天是哪天,可以指定具体月份。

例如:当前月的最后一天

select add_months(sysdate,3)   from  dual
--2024-03-31 15:00:41

例如:2024年2月的最后一天。

select last_day(to_date('2024-02-01','yyyy-MM-dd')) from dual
--2024-02-29 00:00:00

6、两个日期相差月份数(months_between)

计算两个日期之间相差的月份数,返回结果可能带小数。

例如:2008年距离现在过去多少月了?

select floor(months_between(sysdate ,to_date('2008-08-01','yyyy-MM-dd'))) from dual
--187

例如:2008年距离现在过去多少年了?

select floor(months_between(sysdate ,to_date('2008-08-01','yyyy-MM-dd'))/12) from dual
--15

7、获取下个周几是几号(next_day)

表示从指定日期开始算,下周几是几号?此函数的第二个参数范围是[1,7],超出范围会报错。

注意的是:1代表周日,7代表周六。

例如:下个周五是几号

select next_day(SYSDATE ,6) from dual
-- 2024-03-22 15:25:34

8、获取指定时间的年或月或日(extract)

例如:获取当前时间年份

SELECT extract(YEAR FROM sysdate) FROM DUAL;  
-- 2024

例如:获取当前时间月份

SELECT extract(MONTH FROM sysdate) FROM DUAL;  
-- 3

例如:获取当前时间是几号

SELECT extract(DAYFROM sysdate) FROM DUAL;  
-- 21

9、时间的四舍五入(round、trunc)

9.1 round

如果某时间在中午之前,使用round函数会将该时间设置为该天0点(就是午夜),如果为中午之后就设置为次日零点。就好比以中午12:00:00为分界进行四舍五入。

例如:2024-03-21 11:11:10会变成2024-03-21 00:00:00,2024-03-21 13:11:10会变成2024-03-22 00:00:00

SELECT round( to_date('2024-03-21 11:11:10','yyyy-MM-dd hh24:mi:ss')) FROM dual;
--2024-03-21 00:00:00

SELECT round( to_date('2024-03-21 13:11:10','yyyy-MM-dd hh24:mi:ss')) FROM dual;
--2024-03-22 00:00:00

9.2 trunc

trunc函数无论是否超过12:00:00,都会设置为当日零点,类似于向下取整。

例如:2024-03-21 11:11:10与2024-03-21 13:11:10,都是变成2024-03-21 00:00:00

SELECT trunc( to_date('2024-03-21 11:11:10','yyyy-MM-dd hh24:mi:ss')) FROM dual;
--2024-03-21 00:00:00

SELECT trunc( to_date('2024-03-21 13:11:10','yyyy-MM-dd hh24:mi:ss')) FROM dual;
--2024-03-21 00:00:00

10、取一组时间的最大值和最小值(greatest、least)

例如:greatest取最大值

select greatest(to_date('2024-11-11','yyyy-MM-dd'),to_date('2024-12-11','yyyy-MM-dd'),to_date('2024-01-05','yyyy-MM-dd'),to_date('2024-10-11','yyyy-MM-dd')) from dual
--2024-12-11 00:00:00

例如:least取最小值

select least(to_date('2024-11-11','yyyy-MM-dd'),to_date('2024-12-11','yyyy-MM-dd'),to_date('2024-01-05','yyyy-MM-dd'),to_date('2024-10-11','yyyy-MM-dd')) from dual
--2024-01-05 00:00:00
-- 3

11、时区换算(new_time)

用法:new_time(date,‘this’,‘other’),date代表的是要换算时区的时间,‘this’代表的是要换算时区的编码缩写,‘other’换算目标时区的编码缩写。

例如:2024-10-01 12:00:00在北京和夏威夷的时间分别是多少

select  to_date('2024-10-01 12:00:00','yyyy-MM-dd hh24:mi:ss'),new_time(to_date('2024-10-01 12:00:00','yyyy-MM-dd hh24:mi:ss'),'EST','HST') from dual
-- 2024-10-01 12:00:00     2024-10-01 07:00:00

小结

Oracle当中的时间函数使用非常灵活,可以变换各种格式进行查询处理。

例如:小帅2024年03月21日入职新公司,三个月试用期,转正后的每月第一天可以做转正报告。那小帅第一次做转正报告在什么时候?

select last_day(add_months(to_date('2024-03-21','yyyy-MM-dd'),3))+1 from dual
--2024-07-01 00:00:00

标签:sysdate,03,00,last,函数,--,2024,date,21
From: https://blog.csdn.net/weixin_45176509/article/details/136908269

相关文章

  • 前端基础之JavaScript函数
    一、什么是函数在JavaScript中,函数是一种可重复使用的代码块,用于执行特定任务或计算。函数可以接受参数,执行特定的操作,并返回一个值。二、函数的声明函数可以通过函数声明、函数表达式或箭头函数来定义。函数声明:functionfunctionName(parameters){//函数体......
  • C++ 纯虚函数
    纯虚函数优点防止派生类忘记实现虚函数,纯虚函数使得派生类必须实现基类的虚函数。在某些场景下,创建基类对象是不合理的,含有纯虚拟函数的类称为抽象类,它不能直接生成对象。声明方法:在基类中纯虚函数的方法的后面加=0。virtualvoidfuntion()=0;virtualstd::stringGetN......
  • elasticsearch ilm 再学习与实战
    目录了解应用其他脚本了解如果你对es有一定的使用经验,相信应该听过ilm机制,没错,就是es的索引生命周期管理机制。在实际项目应用中,合理应用ilm机制可以解放我们的双手,不用手动去管理索引的新建、切分,只需要内部机制处理索引,如:1.最新的数据可读可写2.次新的数据仅可读......
  • SQL Server分页的内置函数
    SQLServer提供了几个内置函数来实现数据分页,以下是其中常用的函数:ROW_NUMBER():ROW_NUMBER()函数可以为结果集中的每一行添加一个序号,按照指定的排序方式进行排序。结合ROW_NUMBER()函数和WHERE子句,可以实现简单的分页效果。示例:SELECT*FROM(SELECT*,ROW_NUMBER()OV......
  • python 函数(解包、互相调用、作用域、函数的封装、内置函数:eval()、zip()、open())
    函数解包"""1、函数的注释:参数和返回值在注释里可以自动添加显示,只需手动加说明。2、函数的解包【拆包】:函数的参数要传递数据有多个值的时候,中间步骤拿到数据保存在元组或者列表或者字典里。-传递参数的时候加一个*或者**解包-一次拿到元组列表字典的......
  • ElasticSearch中使用ik分词器进行实现分词操作
    简介:在默认的情况下,ES中只存在Stander分词器,但是这个分词器往往不满足我们的分词需求,这里通过ik分词器进行自定义我们的分词操作1、第一步将ik分词器进行下载下载地址:https://github.com/medcl/elasticsearch-analysis-ik需要注意,需要选择和自己的ES版本对应的版本2、将ik分词......
  • ES9200端口漏洞添加授权:es集群添加用户安全认证功能(Set up basic security for the E
    hR0wZPaaSHmi-slI0GAVMw文章目录引言I设置访问密码1.1每个集群节点都需要编辑elasticsearch.yml文件1.2生成elastic-certificates.p121.3重启ES集群1.4创建Elasticsearch集群密码1.5访问验证1.6kibana设置elasticsearch帐号密码1.7logstash......
  • C++ 合成默认构造函数
    问题:C++面向对象编程时,如果我们没有声明任何构造函数constructor,按照以前最初学习,说编译器会自动合成一个默认的无参构造函数defaultconstructor,但是事实确实是这样吗,存不存在例外呢,即使有合成构造函数,那么它又将对类数据进行怎样的初始化呢?1.问题一如果我们没有声明任何构造......
  • 复变函数,启动!计应数番外编~对冒险主义的姚发起华丽叛逆的说!!!
    \[\newcommand{\Arg}{\operatorname{Arg}}\newcommand{\i}{\mathbfi}\newcommand{\d}{\mathrmd}\newcommand{\p}{\part}\newcommand{\Ln}{\operatorname{Ln}}\newcommand{\Arccos}{\operatorname{Arccos}}\newcommand{\Arcsin}{\operatorname{A......
  • gin框架函数语法
    引擎类:gin.Default()带中间件路由引擎gin.New()不带中间件路由引擎路由类:r.GET()查询接口r.POST()创建接口r.PUT()更新接口r.DELETE()删除接口r.Run()运行端口r.Static()模糊路径配置静态文件r.StaticFS()API路径配置静态文件r.StaticFile()精确路径配置静态文件r.L......