03-SQL必備

一、SQL SERVER 篇

Sql Server經(jīng)典實例
Sql Server數(shù)據(jù)庫的主要對象
Sql Server操作與技巧

一碴裙、時間函數(shù)
 --getdate 獲取當前時間
 select getdate()
 --dateadd 原有時間加: 2013-02-17 13:20:16 此時間加12個月
 select dateadd(MONTH,12,'2013-02-17 13:20:16')  --返回:2014-02-17 13:20:16.000  (參數(shù)month可以改為 day误债,year等日期加相應(yīng)的值)
 --datediff 兩個時間的差 (后面-前面=返回值)
 select datediff(day,'2013-02-01','2013-02-18')   --返回:17  (參數(shù)day可以改為 month,year等日期加相應(yīng)的值)
 --datepart 獲取日期的某個部分整數(shù)
 select DATEPART(month, '2013-2-17')  --返回 2    (參數(shù)month可以改為 day夸溶,year等日期加相應(yīng)的值)
 --datename 獲取指定部位的字符串
 select datename(weekday, '2013-2-17')  --返回 星期日 (參數(shù)weekday可以改為 day,year等日期加相應(yīng)的值)
 --day(), month(),year() 獲取指定部位的字符串
 select day('2013-2-15') --返回15
 
二、時間格式轉(zhuǎn)換
    select CONVERT(varchar, getdate(), 120 )  --返回 2013-02-17 13:37:54
    select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') --返回 20130217133828
    select CONVERT(varchar(12) , getdate(), 111 )  --返回 2013/02/17
    select CONVERT(varchar(12) , getdate(), 112 )  --返回 20130217
    select CONVERT(varchar(12) , getdate(), 102 )  --返回 2013.02.17
    select CONVERT(varchar(12) , getdate(), 101 )  --返回 02/17/2013
    select CONVERT(varchar(12) , getdate(), 103 )  --返回 17/02/2013
    select CONVERT(varchar(12) , getdate(), 104 )  --返回 17.02.2013
    select CONVERT(varchar(12) , getdate(), 105 )  --返回 17-02-2013
    select CONVERT(varchar(12) , getdate(), 106 )  --返回 17 02 2013
    select CONVERT(varchar(12) , getdate(), 107 )  --返回 02 17, 2013
    select CONVERT(varchar(12) , getdate(), 108 )  --返回 13:42:50
    select CONVERT(varchar(12) , getdate(), 109 )  --返回 02 17 2013 
    select CONVERT(varchar(12) , getdate(), 110 )  --返回 02-17-2013
    select CONVERT(varchar(12) , getdate(), 113 )  --返回 17 02 2013 1
    select CONVERT(varchar(12) , getdate(), 114 )  --返回 13:42:24:743
三稿黄、時間格式與其他格式轉(zhuǎn)換
   將int轉(zhuǎn)換為時間:convert(datetime,left(DATEid,8),101)
   將時間轉(zhuǎn)換為int: year(CreateDate)*10000 + month(CreateDate)*100 + day(CreateDate)
   將時間格式[2014-07-24 10:32:43.197]轉(zhuǎn)換為int20140724:select cast(replace(convert(char(10),GETDATE(),120),'-','') as int)
 *************************************************************
SQLSERVER 函數(shù)篇:
一、字符函數(shù)
ascii(字符串表達式)
char(整數(shù)表達式)
charindex(字符串表達式 1, 字符串表達式2[,整數(shù)表達式])
difference(字符串表達式 1跌造,字符串表達式 2)
left(字符串表達式杆怕,整數(shù)表達式)
right(字符串表達式族购,整數(shù)表達式)
len(字符串表達式)
lower(字符串表達式)
upper(字符串表達式)
ltrim(字符串表達式)
rtrim(字符串表達式)
patindex(字符串表達式 1,字符串表達式 2)
reverse(字符串表達式)
space(整數(shù)表達式)
str(float 型小數(shù)[,總長度[,小數(shù)點后保留的位數(shù)]])
stuff (字符串表達式 1陵珍,開始位置寝杖,長度,字符串表達式 2)
substring(字符串表達式互纯,開始位置,長度)
replace(字符串表達式 1留潦,字符串表達式 2只盹,字符串表達式 3)
二、數(shù)學(xué)函數(shù)
abs(數(shù)值表達式)
cos(浮點表達式)
sin(浮點表達式)
cot(浮點表達式)
ceiling(數(shù)值表達式)
floor(數(shù)值表達式)
rand([整數(shù)表達式])
round(數(shù)值表達式[,長度[,操作方式]])
三兔院、日期函數(shù)
dateadd(日期部分殖卑,數(shù)字,日期)
datediff(日期部分坊萝,開始日期懦鼠,結(jié)束日期)
datename(日期部分,日期)
datepart(日期部分屹堰,日期)
day(日期) month (日期) year (日期)
四肛冶、轉(zhuǎn)換函數(shù)
convert(數(shù)據(jù)類型[(長度)],表達式[扯键,樣式])
cast(表達式 as 數(shù)據(jù)類型[(長度)])
getdate()
五睦袖、系統(tǒng)和功能函數(shù)
select newid()
isnumeric(任意表達式)
isdate(任意表達式)   
六、常用系統(tǒng)內(nèi)置
常用系統(tǒng)存儲過程:
exec sp_databases; --查看數(shù)據(jù)庫
exec sp_tables; --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--約束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存儲過程創(chuàng)建荣刑、定義語句
exec sp_rename student, stuInfo;--修改表馅笙、索引、列的名稱
exec sp_renamedb myTempDB, myDB;--更改數(shù)據(jù)庫名稱
exec sp_defaultdb 'master', 'myDB';--更改登錄名的默認數(shù)據(jù)庫
exec sp_helpdb;--數(shù)據(jù)庫幫助厉亏,查詢數(shù)據(jù)庫信息
exec sp_helpdb master;
七董习、常用系統(tǒng)變量:
1、@@IDENTITY<br>返回最后插入的標識值爱只。這個變量很有用皿淋,當你插入一行數(shù)據(jù)時,想同時獲得該行的的ID(標示列)恬试,就可以用@@IDENTITY
示例:下面的示例向帶有標識列的表中插入一行窝趣,并用 @@IDENTITY 顯示在新行中使用的標識值。
INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'
2训柴、@@ROWCOUNT
返回受上一語句影響的行數(shù)哑舒。
示例:下面的示例執(zhí)行 UPDATE 語句并用 @@ROWCOUNT 來檢測是否有發(fā)生更改的行。
UPDATE authors SET au_lname = 'Jones' WHERE au_id = '999-888-7777'
IF @@ROWCOUNT = 0
print 'Warning: No rows were updated'
3幻馁、@@CONNECTIONS
返回自上次啟動 Microsoft SQL Server以來連接或試圖連接的次數(shù)洗鸵。
示例:下面的示例顯示了到當前日期和時間為止試圖登錄的次數(shù)越锈。
SELECT GETDATE() AS 'Date and Time', @@CONNECTIONS AS 'Login Attempts'
4、@@CPU_BUSY
返回自上次啟動 Microsoft SQL Server以來 CPU 的工作時間膘滨,單位為毫秒(基于系統(tǒng)計時器的分辨率)瞪浸。
示例:下面的示例顯示了到當前日期和時間為止 SQL Server CPU 的活動
SELECT @@CPU_BUSY AS 'CPU ms', GETDATE() AS 'As of'
5、@@DATEFIRST
返回 SET DATEFIRST 參數(shù)的當前值吏祸,SET DATEFIRST 參數(shù)指明所規(guī)定的每周第一天:1 對應(yīng)星期一对蒲,2 對應(yīng)星期二,依次類推贡翘,用 7 對應(yīng)星期日蹈矮。
示例:下面的示例將每周第一天設(shè)為 5 (星期五),并假定當日是星期六鸣驱。SELECT 語句返回 DATEFIRST 值和當日是此周的第幾天泛鸟。
SET DATEFIRST 5
SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today'
6、@@IO_BUSY
返回 Microsoft SQL Server自上次啟動后用于執(zhí)行輸入和輸出操作的時間踊东,單位為毫秒(基于系統(tǒng)計時器的分辨率)北滥。
示例:下面的示例顯示 SQL Server 自啟動到目前已用于執(zhí)行輸入/輸出操作的毫秒數(shù)。
SELECT @@IO_BUSY AS 'IO ms', GETDATE() AS 'As of'
7闸翅、@@LANGID
返回當前所使用語言的本地語言標識符(ID)再芋。
示例:下面的示例將當前會話的語言設(shè)置為意大利語 (Italian),然后用 @@LANGID 返回意大利語的 ID坚冀。
SET LANGUAGE 'Italian'
SELECT @@LANGID AS 'Language ID'
8济赎、@@LANGUAGE
返回當前使用的語言名。
示例:下面的示例返回當前會話的語言记某。
SELECT @@LANGUAGE AS 'Language Name'
9司训、@@MAX_CONNECTIONS
返回 Microsoft SQL Server上允許的同時用戶連接的最大數(shù)。返回的數(shù)不必為當前配置的數(shù)值液南。
示例:下面的示例假定 SQL Server 尚未被重新配置更少的用戶連接壳猜。
SELECT @@MAX_CONNECTIONS
10、@@PACK_RECEIVED
返回 Microsoft SQL Server自上次啟動后從網(wǎng)絡(luò)上讀取的輸入數(shù)據(jù)包數(shù)目滑凉。
示例 SELECT @@PACK_RECEIVED
11统扳、@@PACK_SENT
返回 Microsoft SQL Server自上次啟動后寫到網(wǎng)絡(luò)上的輸出數(shù)據(jù)包數(shù)目。示例SELECT @@PACK_SENT
12譬涡、@@PACKET_ERRORS
返回自 SQL Server 上次啟動后闪幽,在 Microsoft SQL Server連接上發(fā)生的網(wǎng)絡(luò)數(shù)據(jù)包錯誤數(shù)。
示例SELECT @@PACKET_ERRORS
13涡匀、@@SERVERNAME
返回運行 Microsoft SQL Server的本地服務(wù)器名稱。示例SELECT @@SERVERNAME
14溉知、@@SERVICENAME
返回 Microsoft SQL Server正在其下運行的注冊表鍵名陨瘩。若當前實例為默認實例腕够,則 @@SERVICENAME 返回 MSSQLServer;若當前實例是命名實例舌劳,則該函數(shù)返回實例名帚湘。
示例SELECT @@SERVICENAME
15、@@SPID
返回當前用戶進程的服務(wù)器進程標識符 (ID)甚淡。
示例:下面的示例返回當前用戶進程的進程 ID大诸、登錄名和用戶名。
SELECT @@SPID AS 'ID', SYSTEM_USER AS 'Login Name', USER AS 'User Name'
16贯卦、@@TIMETICKS
返回一刻度的微秒數(shù)资柔。示例SELECT @@TIMETICKS
17、@@TOTAL_ERRORS
返回 Microsoft SQL Server自上次啟動后撵割,所遇到的磁盤讀/寫錯誤數(shù)贿堰。
示例:下面的示例顯示了 SQL Server 到當前日期和時間為止所遇到的錯誤數(shù)。
SELECT @@TOTAL_ERRORS AS 'Errors', GETDATE() AS 'As of'
18啡彬、@@TOTAL_WRITE
返回 Microsoft SQL Server自上次啟動后寫入磁盤的次數(shù)羹与。
示例:下面的示例顯示了到當前日期和時間為止總的磁盤讀寫次數(shù)。
SELECT @@TOTAL_READ AS 'Reads', @@TOTAL_WRITE AS 'Writes', GETDATE() AS 'As of'
19庶灿、@@VERSION<br>返回 Microsoft SQL Server當前安裝的日期纵搁、版本和處理器類型。
示例:下面的示例返回當前安裝的日期往踢、版本和處理器類型诡渴。SELECT @@VERSION
20、@@TOTAL_READ
返回 Microsoft SQL Server自上次啟動后讀取磁盤(不是讀取高速緩存)的次數(shù)菲语。
示例:下面的示例顯示了到當前日期和時間為止的總的磁盤讀寫次數(shù)妄辩。
SELECT @@TOTAL_READ AS 'Reads', @@TOTAL_WRITE AS 'Writes', GETDATE() AS 'As of'
 *************************************************************
1.常規(guī)表的重建
if exists(select * from sys.objects where name='tmp' and type='U')
    drop table tmp
else
    create table tmp (
    id int,
    name varchar(20)
    )
type='U'通常是用來防止,起名時和系統(tǒng)的對象同名山上。如果可以保證沒有眼耀,可以不帶。
2.臨時表的重建
 if (object_id('tempdb..#tmp') is not null)
    drop table #tmp
else
 create table #tmp(id int,name varchar(20))
3.SQL:將查詢結(jié)果插入到另一個表的三種情況:
一:如果要插入目標表不存在:
select * into 目標表 from 表 where …
二:如果要插入目標表已經(jīng)存在:
insert into 目的表 select * from 表 where 條件
若兩表只是有部分(字段)相同佩憾,則
insert into b(col1,col2,col3,col4,…) select col1,col2,col3,col4,… from a where…
三:如果是跨數(shù)據(jù)庫操作的話: 怎么把A數(shù)據(jù)庫的atable表所查詢的東西哮伟,全部插入到B 數(shù)據(jù)庫的btable表中
select * into B.btable from A.atable where …
同樣,如果是跨服務(wù)器的妄帘,也是可以的楞黄。

二、ORACLE 篇

Oracle SQL性能優(yōu)化最常用40條建議:https://zhuanlan.zhihu.com/p/453446262

一抡驼、當前時間拆分:
select to_char(sysdate,'yyyy') as nowYear   from dual;   //獲取時間的年 
select to_char(sysdate,'mm')    as nowMonth from dual;   //獲取時間的月 
select to_char(sysdate,'dd')    as nowDay    from dual;   //獲取時間的日
select to_char(sysdate,'day') from dual; 
select to_char(sysdate,'hh24') as nowHour   from dual;   //獲取時間的時 
select to_char(sysdate,'mi')    as nowMinute from dual;   //獲取時間的分 
select to_char(sysdate,'ss')    as nowSecond from dual;   //獲取時間的秒
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual
二鬼廓、當前時間自身計算:
當前時間減去 7 分鐘的時間
select sysdate,sysdate - interval '7' MINUTE from dual
當前時間減去 7 小時的時間
select sysdate - interval '7' hour from dual
當前時間減去 7 天的時間
select sysdate - interval '7' day from dual
當前時間減去 7 月的時間
select sysdate,sysdate - interval '7' month from dual
當前時間減去 7 年的時間
select sysdate,sysdate - interval '7' year from dual 
三、當前時間其他計算:
START_DATE致盟,END_DATE碎税,計算這兩個日期的時間差(分別以天尤慰,小時,分鐘雷蹂,秒伟端,毫秒):
天:   ROUND(TO_NUMBER(sysdate - START_DATE))
小時: ROUND(TO_NUMBER(sysdate - START_DATE) * 24)
分鐘: ROUND(TO_NUMBER(sysdate - START_DATE) * 24 * 60)
秒:   ROUND(TO_NUMBER(sysdate - START_DATE) * 24 * 60 * 60)
毫秒: ROUND(TO_NUMBER(sysdate - START_DATE) * 24 * 60 * 60 * 1000)
四、當前時間轉(zhuǎn)換
時間轉(zhuǎn)換為char:
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   
char轉(zhuǎn)換為時間:
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual
 ****************************ORACLE 函數(shù)篇*********************************
一匪煌、字符函數(shù)
lower(char):將字符串轉(zhuǎn)化為小寫的格式责蝠。
upper(char):將字符串轉(zhuǎn)化為大寫的格式。
length(char):返回字符串的長度萎庭。
substr(char, m, n):截取字符串的子串霜医,n代表取n個字符的意思,不是代表取到第n個
replace(char1, search_string, replace_string)
instr(C1,C2,I,J) -->判斷某字符或字符串是否存在擎椰,存在返回出現(xiàn)的位置的索引支子,否則返回小于1;在一個字符串中搜索指定的字符,返回發(fā)現(xiàn)指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的開始位置,默認為1
J 出現(xiàn)的位置,默認為1
二、數(shù)學(xué)函數(shù)
round(n,[m]) 該函數(shù)用于執(zhí)行四舍五入
trunc(n,[m]) 該函數(shù)用于截取數(shù)字达舒。
mod(m,n)取余函數(shù)
floor(n) 返回小于或是等于n的最大整數(shù)
ceil(n) 返回大于或是等于n的最小整數(shù)
abs(n) 返回數(shù)字n的絕對值
三值朋、日期函數(shù)
sysdate 返回系統(tǒng)時間
add_months函數(shù) 可以得到某一時間之前或之后n個月的時間
last_day(d) 返回指定日期所在月份的最后一天
四、轉(zhuǎn)換函數(shù)
to_date()函數(shù)
to_char()函數(shù)
五巩搏、系統(tǒng)和功能函數(shù)
1)terminal:當前會話客戶所對應(yīng)的終端的標示符昨登,如計算機名
2)language: 語言
3)db_name: 當前數(shù)據(jù)庫名稱
4)nls_date_format: 當前會話客戶所對應(yīng)的日期格式
5)session_user: 當前會話客戶所對應(yīng)的數(shù)據(jù)庫用戶名
6)current_schema: 當前會話客戶所對應(yīng)的默認方案名
7)host: 返回數(shù)據(jù)庫所在主機的名稱
六、空處理函數(shù)
1.NVL函數(shù):NVL函數(shù)的格式如下:NVL(expr1,expr2)
 含義是:如果oracle第一個參數(shù)為空那么顯示第二個參數(shù)的值贯底,如果第一個參數(shù)的值不為空丰辣,則顯示第一個參數(shù)本來的值。
2 NVL2函數(shù):NVL2函數(shù)的格式如下:NVL2(expr1,expr2, expr3)
 含義是:如果該函數(shù)的第一個參數(shù)為空那么顯示第二個參數(shù)的值禽捆,如果第一個參數(shù)的值不為空笙什,則顯示第三個參數(shù)的值。
3. NULLIF函數(shù):NULLIF(exp1,expr2)函數(shù)的作用是如果exp1和exp2相等則返回空(NULL)胚想,否則返回第一個值琐凭。
4.COALESCE函數(shù) :COALESCE(expr1, expr2, expr3….. exprn)
 COALESCE是這樣來處理這些參數(shù)的。如果第一個參數(shù)為空浊服,則看第二個參數(shù)是否是空统屈,否則則顯示第一個參數(shù),如果第二個參數(shù)是空再看第三個參數(shù)是否為空牙躺,否則顯示第二個參數(shù)愁憔,依次類推。
 COALESCE里的所有參數(shù)類型必須保持一致孽拷,NVL可以不一致吨掌。
七、其他函數(shù)
Oracle trunc()函數(shù)的用法
 /**************日期********************/
 1.select trunc(sysdate) from dual  --2011-3-18  今天的日期為2011-3-18
 2.select trunc(sysdate, 'mm')   from   dual  --2011-3-1    返回當月第一天.
 3.select trunc(sysdate,'yy') from dual  --2011-1-1       返回當年第一天
 4.select trunc(sysdate,'dd') from dual  --2011-3-18    返回當前年月日
 5.select trunc(sysdate,'yyyy') from dual  --2011-1-1   返回當年第一天
 6.select trunc(sysdate,'d') from dual  --2011-3-13 (星期天)返回當前星期的第一天
 7.select trunc(sysdate, 'hh') from dual   --2011-3-18 14:00:00   當前時間為14:41 
 8.select trunc(sysdate, 'mi') from dual  --2011-3-18 14:41:00   TRUNC()函數(shù)沒有秒的精確
 /***************數(shù)字********************/
 /*
 TRUNC(number,num_digits) 
 Number 需要截尾取整的數(shù)字。
 Num_digits 用于指定取整精度的數(shù)字思犁。Num_digits 的默認值為 0代虾。
 TRUNC()函數(shù)截取時不進行四舍五入
 */
 9.select trunc(123.458) from dual --123 
 10.select trunc(123.458,0) from dual --123
 11.select trunc(123.458,1) from dual --123.4
 12.select trunc(123.458,-1) from dual --120
 13.select trunc(123.458,-4) from dual --0
 14.select trunc(123.458,4) from dual  --123.458
 15.select trunc(123) from dual  --123
 16.select trunc(123,1) from dual --123
 17.select trunc(123,-1) from dual --120
decode函數(shù)的用法: https://www.jb51.net/article/232218.htm
1. decode(條件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值) 該函數(shù)的含義如下:
   IF 條件=值1 THEN   RETURN(翻譯值1)
   ELSIF 條件=值2 THEN  RETURN(翻譯值2)
    ......
   ELSIF 條件=值n THEN RETURN(翻譯值n)
   ELSE   RETURN(缺省值)  END IF
2. decode(字段或字段的運算进肯,值1激蹲,值2,值3) 這個函數(shù)運行的結(jié)果是江掩,當字段或字段的運算的值等于值1時学辱,該函數(shù)返回值2,否則返回值3
 ****************************ORACLE 函數(shù)篇*********************************
 ****************************ORACLE 常用系統(tǒng)查詢*********************************
1.查詢Oracle正在執(zhí)行的sql語句及執(zhí)行該語句的用戶
SELECT b.sid oracleID,b.username 登錄Oracle用戶名, b.serial#,spid 操作系統(tǒng)ID,paddr,sql_text 正在執(zhí)行的SQL, b.machine 計算機名
FROM v$process a, v$session b, v$sqlarea c
WHERE a.addr = b.paddr AND b.sql_hash_value = c.hash_value

2.查看正在執(zhí)行sql的發(fā)起者的發(fā)放程序
 SELECT OSUSER 電腦登錄身份,PROGRAM 發(fā)起請求的程序,USERNAME 登錄系統(tǒng)的用戶名,SCHEMANAME, B.Cpu_Time 花費cpu的時間,STATUS,B.SQL_TEXT 執(zhí)行的sql
 FROM V$SESSION A
 LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS AND A.SQL_HASH_VALUE = B.HASH_VALUE
 ORDER BY b.cpu_time DESC

3.查出oracle當前的被鎖對象
 SELECT l.session_id sid,
    s.serial#,
    l.locked_mode 鎖模式,
    l.oracle_username 登錄用戶,
    l.os_user_name 登錄機器用戶名,
    s.machine 機器名,
    s.terminal 終端用戶名,
    o.object_name 被鎖對象名,
    s.logon_time 登錄數(shù)據(jù)庫時間
 FROM v$locked_object l, all_objects o, v$session s
 WHERE l.object_id = o.object_id AND l.session_id = s.sid ORDER BY sid, s.serial#;
3.1 kill掉當前的鎖對象可以為
 alter system kill session 'sid环形, s.serial#';

4.查找前十條性能差的sql
SELECT * FROM (select PARSING_USER_ID,EXECUTIONS,SORTS, 
COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea 
order BY disk_reads DESC )where ROWNUM<10 ;

5.查看占io較大的正在運行的session
SELECT se.sid,se.serial#,pr.SPID,se.username,se.status, se.terminal,se.program,se.MODULE,se.sql_address,st.event,st.p1text,si.physical_reads, si.block_changes 
FROM v$session se,v$session_wait st, v$sess_io si,v$process pr 
WHERE st.sid=se.sid AND st.sid=si.sid AND se.PADDR=pr.ADDR AND se.sid>6 AND st.wait_time=0 AND st.event NOT LIKE '%SQL%' 
ORDER BY physical_reads DESC
6.對比兩個庫表結(jié)構(gòu) 字段和數(shù)據(jù)類型是否一致
select u1.OWNER,
       u2.OWNER,
       u1.TABLE_NAME newTableName,
       u2.TABLE_NAME oldTableName,
       u1.COLUMN_NAME newColumnName,
       u2.COLUMN_NAME oldColumnName,
       u1.DATA_TYPE newDataType,
       u2.DATA_TYPE  oldDataType
  from all_tab_columns u1, all_tab_columns u2
   where u1.OWNER = 'AAA'
   AND U2.OWNER = 'BBB'
   and u1.TABLE_NAME = u2.table_name
   and u1.COLUMN_NAME = u2.COLUMN_NAME
   and u1.DATA_TYPE != u2.DATA_TYPE;
****************************ORACLE 常用系統(tǒng)查詢*********************************

三策泣、DB2篇

--獲取當前日期: select current date from sysibm.sysdummy1; 
                  values current date;  
 --獲取當前日期   select current time from sysibm.sysdummy1;
                  values current time; 
 --獲取當前時間戳 select current timestamp from sysibm.sysdummy1;
                  values current timestamp;  
 --要使當前時間或當前時間戳記調(diào)整到 GMT/CUT,則把當前的時間或時間戳記減去當前時區(qū)寄存器:
         values current time -current timezone; 
         values current timestamp -current timezone;  
--獲取當前年份   values year(current timestamp);
--獲取當前月     values month(current timestamp);
--獲取當前日     values day(current timestamp); 
--獲取當前時     values hour(current timestamp);
--獲取分鐘       values minute(current timestamp);  
--獲取秒        values second(current timestamp); 
--獲取毫秒      values microsecond(current timestamp); 
--從時間戳記單獨抽取出日期和時間 
  values date(current timestamp); 07/24/14
  values VARCHAR_FORMAT(current TIMESTAMP,'yyyy-mm-dd'); 
  values char(current date);  2014-07-24-10.46.51.978540
  values time(current timestamp);  10:47:25
--執(zhí)行日期和時間的計算
  values current date+1 year; 
  values current date+3 years+2 months +15 days;
  values current time +5 hours -3 minutes +10 seconds;  
--計算兩個日期之間的天數(shù)  
  values days(current date)- days(date('2010-02-20'));   
--時間和日期換成字符串  
  values char(current date);  
  values char(current time);
--要將字符串轉(zhuǎn)換成日期或時間值  
  values timestamp('2010-03-09-22.43.00.000000');
  values timestamp('2010-03-09 22:44:36');  
  values date('2010-03-09');
  values date('03/09/2010');  
  values time('22:45:27');  
  values time('22.45.27'); 
  --計算兩個時間戳記之間的時差:  
  --秒的小數(shù)部分為單位  
  values timestampdiff(1,char(current timestamp - timestamp('2010-01-01-00.00.00')));   --秒為單位
  values timestampdiff(2,char(current timestamp - timestamp('2010-01-01-00.00.00')));   --分為單位
  values timestampdiff(4,char(current timestamp - timestamp('2010-01-01-00.00.00')));   --小時為單位
  values timestampdiff(8,char(current timestamp - timestamp('2010-01-01-00.00.00')));   --天為單位 
  values timestampdiff(16,char(current timestamp - timestamp('2010-01-01-00.00.00')));   --周為單位  
  values timestampdiff(32,char(current timestamp - timestamp('2010-01-01-00.00.00')));   --月為單位  
  values timestampdiff(64,char(current timestamp - timestamp('2010-01-01-00.00.00')));   --季度為單位  
  values timestampdiff(128,char(current timestamp - timestamp('2010-01-01-00.00.00')));   --年為單位  
  values timestampdiff(256,char(current timestamp - timestamp('2010-01-01-00.00.00')));
  將時間轉(zhuǎn)換為int:CAST(TO_CHAR(IN_DATE,'YYYYMMDD') AS INT) AS DATEID
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抬吟,一起剝皮案震驚了整個濱河市萨咕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌火本,老刑警劉巖危队,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钙畔,居然都是意外死亡茫陆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門擎析,熙熙樓的掌柜王于貴愁眉苦臉地迎上來簿盅,“玉大人,你說我怎么就攤上這事揍魂〗按祝” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵现斋,是天一觀的道長喜最。 經(jīng)常有香客問我,道長步责,這世上最難降的妖魔是什么返顺? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蔓肯,結(jié)果婚禮上遂鹊,老公的妹妹穿的比我還像新娘。我一直安慰自己蔗包,他們只是感情好秉扑,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般舟陆。 火紅的嫁衣襯著肌膚如雪误澳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天秦躯,我揣著相機與錄音忆谓,去河邊找鬼。 笑死踱承,一個胖子當著我的面吹牛倡缠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茎活,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昙沦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了载荔?” 一聲冷哼從身側(cè)響起盾饮,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎懒熙,沒想到半個月后丘损,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡煌珊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年号俐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片定庵。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吏饿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蔬浙,到底是詐尸還是另有隱情猪落,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布畴博,位于F島的核電站笨忌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏俱病。R本人自食惡果不足惜官疲,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亮隙。 院中可真熱鬧途凫,春花似錦、人聲如沸溢吻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至犀盟,卻和暖如春而晒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阅畴。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工倡怎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恶阴。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓诈胜,卻偏偏與公主長得像豹障,于是被迫代替她去往敵國和親冯事。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容