数据库常见记录

常用命令

oracle

数据连接

在这里插入图片描述

窗口函数over()

窗口函数over()函数常用的有两个属性partition by和order by,partition by类似于group by,我们通常将group by叫做分组,而partition by称作分区,分组返回通常是一行,partition by返回的是多行。
窗口函数主要和统计函数,排名函数,错行的函数联合使用。
例:
select t.*,
(t.score-avg(t.score) over( partition by t.subject_id)) as gaps
from test_student_score t

select t.*, rank() over(order by t.score desc) as ranks
from test_student_score t
where t.subject_id = 3;

排序函数ROW_NUMBER、RANK、DENSE_RANK

(1) row_number():连续’排序,如:1 2 3 4
(2) rank(): 跳跃 排序,如:1 2 2 4
(3) dense_rank():密集排序,如:1 2 2 3

时间函数

时间格式(无大小写区分)

Year:

yy two digits 两位年 显示值:07
yyy three digits 三位年 显示值:007
yyyy four digits 四位年 显示值:2007

Month:

mm number 两位月 显示值:11
mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov
month spelled out 字符集表示 显示值:11月,若是英文版,显示november

Day:

dd number 当月第几天 显示值:02
ddd number 当年第几天 显示值:02
dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri
day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday
ddspth spelled out, ordinal twelfth

Hour:

hh two digits 12小时进制 显示值:01
hh24 two digits 24小时进制 显示值:13

Minute:

mi two digits 60进制 显示值:45

Second:

ss two digits 60进制 显示值:25

其它

Q digit 季度 显示值:4
WW digit 当年第几周 显示值:44
W digit 当月第几周 显示值:1

24小时格式下时间范围为: 0:00:00 - 23:59:59…
12小时格式下时间范围为: 1:00:00 - 12:59:59 …

获取当前日期和时间的函数:sysdate systimestamp

日期和字符转换函数用法

TO_CHAR(datetime, ‘format’)
TO_DATE(character, ‘format’)
TO_TIMESTAMP(character, ‘format’)
TO_TIMESTAMP_TZ(character, ‘format’)
select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) as nowTime from dual; //日期转化为字符串

1)add_months(date,int):输入date数据和需要增加的月份数(整数),返回增加若干月份数后date数据。

SELECT ADD_MONTHS(SYSDATE, 1) FROM dual;

2)last_day(date):返回当前日期在该月份的最后一天的日期

SELECT LAST_DAY(SYSDATE) from dual;# 假设今天为2021-04-21,那么执行返回的时间日期为2021-04-30

3)months_between(date1,date2):返回两个日期的月份差,存在小数。

-- 返回值刚好为1,因为都是两个月份的02相减。
-- 提示:如果不相等则有很多小数。这时候使用floor进行向下取整或round进行向上取整
SELECT MONTHS_BETWEEN(to_date('2021-05-02','yyyy-mm-dd'), to_date('2021-04-02','yyyy-mm-dd')) as month from dual;

4)加减时间

-- 当前时间减去10分钟,同理换成year(年)、month(月)、day(日)、hour(时)、second(秒)
select sysdate,sysdate - interval '10' minute from dual;
-- 也可以换成加10分钟。
select sysdate,sysdate + interval '10' minute from dual;

5)求时间为星期几或者几月份或多少年

select to_char(sysdate,'D') from dual; --这周的第几天;每周的第一天为星期天,星期一为第二天
--某天星期几 同样可以求多少年(year)多少月(month)
select to_char(to_date('2021-04-08','yyyy-mm-dd'),'day') from dual; --20210408为星期四
--输出英文。某天星期几 同样可以求多少年多少月
select to_char(to_date('2021-04-08','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = AMERICAN'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值