日期格式參數及其含義說明

日期格式參數及其含義說明

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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章