oracle数据库返回上周日日期,Oracle数据库之日期函数的常见用法。

1、sysdate

用途:获取当前系统时间。

select SYSDATE FROM dual;

16d35594c6581eabcebf44ce8c6ed5de.png

2、to_date('日期字符类型','日期格式类型')

用途:将字符类型转化成日期类型的函数,主要用于插入、查询和修改。

--年 月 日 24制小时 分 秒 上/下午 星期中文

select to_date('2010-10-20 13:23:44','yyyy-mm-dd hh24:mi:ss:am:dy') dateTime from dual;

季度

y 表示年的最后一位

mm 用2位数字表示月

dd 表示当月第几天

hh 2位数表示小时 12进制

mi 2位数表示分钟

ss 2位数表示秒 60进制

q 一位数 表示季度 (1-4)

ww 用来表示当年第几周

yy 表示年的最后2位

mon 用简写形式,

比如11月或者nov

ddd 表示当年第几天

hh24 2位数表示小时 24小时

w用来表示当月第几周

yyy 表示年的最后3位

month 用全称,

比如11月或者november

am或者pm 表示现在是上午还是下午

IW 用来表示当年第几周

yyyy 用4位数表示年

RM 月份的罗马

比如:IV表示4月

day、或者dy用来表示星期几

对于可以为空的日期字段,可用如下求NULL

select to_date(null) from dual;

当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。

如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。

同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。

但是,如果忽略MM参数,Oracle并不会取整到年,而是取整到当前月

3、to_char('日期类型','字符格式类型')

用途:将日期类型转换为字符类型的函数,主要用于查询,也可以进行删除使用。

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') strDateTime from dual; --获取年-月-日 时:分:秒

这里的字符格式类型也可以用上面的表格中的格式。

4、其它用法

1、星期几

1、当前

select to_char(SYSDATE,'day') strDay from dual;

2、指定时间

--字符型日期

select to_char(to_date('2012-10-20','yyyy-mm-dd'),'day') strDay from dual;

--DateTime型日期,Creat_Time是数据库的日期字段

select to_char(Creat_Time,'day') strDay from dual;

3、英文星期

select to_char(to_date('2012-10-20','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = English') strDay from dual;

2、两个日期间的天数

select floor(sysdate - to_date('20161010','yyyymmdd')) strTime from dual;

--其中sysdate=2016/10/20 17:10:51

--显示结果:10

3、两个日期间的月数

--今天距某个时间点

select months_between(SYSDATE,date'2019-01-29') Mon from dual;

--两个指定的时间点

select months_between(date'2019-05-29',date'2019-01-29') Mon from dual;

--Add_months(d,n) : 当前日期d后推n个月,用于从一个日期值增加或减少一些月份

Select add_months(sysdate,2) from dual;

4、获取昨天:

select trunc(sysdate-1) from dual;

5、获取上个月第一天:

select add_months(trunc(sysdate,'MON'),-1) from dual

--两个都可以

select add_months(trunc(sysdate,'MON'),-13) from dual

--以下是上月最后一天

select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;

--上月今天:

select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;

6、获得本季度第一天:

select trunc(add_months(sysdate,0),'Q') from dual

7、当前时间减7分钟:

select sysdate - interval '7' MINUTE from dual;

同理,如果减7小时,7天,7月,7年,将SQL中的MINUTE换成hour,day,month,year,

8、时间间隔乘一个数8:

select sysdate - 8*interval '7' hour from dual;

9、本月最后一天:

Select last_day(sysdate) from dual;

10、按月进行统计

select to_char(sysdate,'mm') from dual group by to_char(sysdate,'mm');

同理,按周是ww,按季度是q,按年是yyyy

11、NEXT_DAY(DATE,WEEKDAY)的用法:距离当前时间最近的下一个星期几所在的时间。

DATE参数为日期型,WEEKDAY可用1~7替代,1表示星期日,2代表星期一

可以设置当前对话的字符集,中文或者英文

alter   session   set   NLS_DATE_LANGUAGE   =   American; --将当前对话改为英文。

alter   session   set   NLS_DATE_LANGUAGE   =   'SIMPLIFIED CHINESE'; --将当前对话改为中文。

select Next_day(sysdate, 1) from dual;

select next_day(sysdate,'星期日') from dual;

5、相关日期函数

add_months(d,n) 日期d加n个月

last_day(d) 包含d的月份的最后一天的日期

month_between(d,e) 日期d与e之间的月份数,e先于d

new_time(d,a,b) a时区的日期和时间d在b时区的日期和时间

next_day(d,day) 比日期d晚,由day指定的周几的日期

sysdate 当前的系统日期和时间

greatest(d1,d2,...dn) 给出的日期列表中最后的日期

least(d1,k2,...dn) 给出的日期列表中最早的日期

to_char(d [,fmt]) 日期d按fmt指定的格式转变成字符串

to_date(st [,fmt]) 字符串st按fmt指定的格式转成日期值,若fmt忽略,st要用缺省格式

round(d [,fmt]) 日期d按fmt指定格式舍入到最近的日期

trunc(d [,fmt]) 日期d按fmt指定格式截断到最近的日期附:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值