日期格式参数及其含义说明

日期格式参数及其含义说明

D 一周中的星期几
DAY 天的名字,使用空格填充到9个字符
DD 月中的第几天
DDD 年中的第几天
DY 天的简写名
IW ISO标准的年中的第几周
IYYY ISO标准的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最后三位,两位,一位
HH 小时,按12小时计
HH24 小时,按24小时计
MI 分
SS 秒
MM 月
Mon 月份的简写
Month 月份的全名
W 该月的第几个星期
WW 年中的第几个星期
*

/
--显示当前时间,查询当前时间是这年的第几天?是这个星期的第几天?是这个月的第几天?
/*
分析 sysdate 显示当前时间   to_char :将日期转按一定格式换成字符类型
*/

select sysdate,to_char(sysdate,'ddd-dd-d') "年-月-星期"
from dual;
--显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序。
/*
  1.从那张表查询 2.查询什么 3.最后排序
*/
select concat(last_name,first_name),to_char(start_date,'yyyy-mm')
from s_emp
order by to_char(start_date,'mm') ;
--找出在(任何年份的)7月受聘的所有雇员
/*
  1.从那张表查询 2.满足什么条件 3.查询什么内容 注意 07 代表7月
*/
select emp.last_name,start_date 
from s_emp emp
where to_char(start_date,'mm') = '07';
--显示所有雇员的姓名以及满10年服务年限的日期
/*
  1.从那张表查询 2.满足什么条件(满10年服务年限的日期)3.查询什么(雇员的姓名,日期)
*/
select concat(last_name,first_name),start_date
from s_emp
where months_between(sysdate,start_date)>=10*12;
--对于每个雇员,显示其加入公司的天数
select last_name,trunc(sysdate-start_date) day
from s_emp;
--显示所有雇员的姓名的前三个字符 :substr 截取 concat 拼接 
select substr(concat(last_name,first_name),1,3) 
from s_emp;
--显示正好为15个字符的雇员姓名 :条件 名字为15个字符 
select concat(last_name,first_name) name
from s_emp
where length(concat(last_name,first_name)) = 15;
--显示只有首字母大写的所有雇员的姓名 条件 :姓名中首字母大写
select concat(last_name,first_name)
from s_emp
where concat(last_name,first_name)= initcap(concat(last_name,first_name));

--以年、月和日显示所有雇员的服务年限(入职了多少年多少月多少天) 无条件
select last_name ,
      trunc((sysdate-start_date)/365), -- 当前日期-入职时间 除以 365 年份
      trunc(mod(months_between(sysdate,start_date),12)), -- 进行取余 求出月份
      trunc(sysdate - add_months(start_date,months_between(sysdate,start_date)))-- months_between两个日期间差了多少个月 add_months 在第一个参数上加上第二个参数的月分 
from s_emp;
--找出早于23年之前受雇的雇员 条件 早于23年之前(判断入职日期到现在是否大于23年)
select last_name ,start_date 
from s_emp
where months_between(sysdate,start_date) > 12*23;
--以这种2001/07/08格式来显示入职时间
select to_char( start_date,'yyyy/mm/dd')
from s_emp;
--多表查询:

--1 查询所有员工的ID,名字和所在部门的名称 (员工表 关联 部门表 消除笛卡尔积)
select emp.id, emp.last_name,dept.name
from s_emp emp,s_dept dept
where emp.dept_id = dept.id;
--2查询部门名称包含Ad的员工姓名薪水 条件 (部门的名称 包含 Ad )
select dept.name,emp.id,emp.last_name,emp.salary
from s_emp emp ,s_dept dept
where emp.dept_id = dept.id and dept.name like '%Ad%';
--3查询欧洲销售部门的薪水在1000到3000的员工信息 Europe 欧洲 Sales 销售
/*
  1.员工信息 (S_emp) 销售部门 (S_dept) 欧洲 (s_region)
  2.进行等职连接 消除笛卡尔积 
  3.区域的名字 为欧洲 部门的名字 为销售 薪水 1000到3000
  4.查询
*/

select e.id , e.last_name , r.name , d.name 
from s_emp e , s_dept d , s_region r
where e.dept_id=d.id and d.region_id=r.id and r.name='Europe'  
                     and d.name='Sales' and salary between 1000 and 3000;
--4 查询部门名称是5位,该部门员工的薪水不等于1500,并按员工的薪水降序排序 执行顺序 1.from 2.where 3.select 4.order by
select emp.last_name, emp.salary
from s_emp emp,s_dept dept
where emp.dept_id = dept.id and length(dept.name) = 5 and salary !=1500
order by salary desc;
原创文章 12 获赞 16 访问量 1535

猜你喜欢

转载自blog.csdn.net/fighting_xuan/article/details/106078437