现在的位置: 首页 > 综合 > 正文

SQL Function

2012年01月15日 ⁄ 综合 ⁄ 共 3821字 ⁄ 字号 评论关闭

Oracle:

1.當天為當年的第幾天

 select to_char(sysdate,'ddd') from dual

2.向前減去一段時間

 A. 向前減去7天

  select sysdate,sysdate - interval '7' day from dual

 B. 向前減去7小時

  select sysdate,sysdate - interval '7' hour from dual

 C. 向前減去7分鐘

  select sysdate,sysdate - interval '7' minute from dual

 D. 向前減去7個月的時間
  
  select sysdate,sysdate - interval '7' month from dual

 E. 向前減去7年的時間
 
  select sysdate,sysdate - interval '7' year from dual

 F. 時間乘以一個數字(向前減去16個小時)

  select sysdate,sysdate -8*interval '2' hour from dual

3. 日期到字符的操作

 select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss‘) from dual

 select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss‘) from dual

 select sysdate,to_char(sysdate,‘yyyy-ddd hh:mi:ss’) from dual

 select sysdate,to_char(sysdate,‘yyyy-mm iw-d hh:mi:ss’) from dual

4. 字符到日期的操作,就是上面的反操作了.

5. 显示Two  Hundred  Twenty-Two  
 
 select  to_char(  to_date(222,'J'),'Jsp')  from  dual     

6. 求某天是星期幾

 select  to_char(to_date('2005-08-26','yyyy-mm-dd'),'day')  from  dual

7.  日期格式冲突问题     

 A. 输入的格式要看你安装的ORACLE字符集的类型,  比如:  US7ASCII,  date格式的类型就是:  '01-Jan-01'     

  alter  system  set  NLS_DATE_LANGUAGE  =  American     

  alter  session  set  NLS_DATE_LANGUAGE  =  American     

 B. 或者在to_date中写     

  select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE  =  American')  from  dual;     

 C. 注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多, 可查看     

  select  *  from  nls_session_parameters     

  select  *  from  V$NLS_PARAMETERS     

8. 求某月的最後一天是幾號

 select last_day(to_date('to_date('2006/06/01','yyyy/mm/dd') ) from dual

9. 求得某年有多少天

 select  add_months(trunc(sysdate,'year'),  12)  -  trunc(sysdate,'year')  from  dual   //就是用下一年的第一天 減去  當年的第一天

10. 閏年處理方法

 select to_char(last_day(to_date('02'||to_char(sysdate,'yyyy'),'mmyyyy')),'dd') from dual //如果得到的是28,那就不是閏年

11. next_day(sysdate,n)
 
 (   n = 1,2,3,4,5,6,7   分別對應的是  周日,周一,周二,周三,周四,周五,周六)
 

 SQL Server

1.  SELECT CONVERT(varchar(100), GETDATE(), 120)                  :2006-05-16 10:57:49

2.  SELECT CONVERT(varchar(100), GETDATE(), 112)                  : 20060516

3.  SELECT CONVERT(varchar(100), GETDATE(), 111)        :2006/05/16

4.  SELECT CONVERT(varchar(100), GETDATE(), 110)        :05-16-2006

5.  SELECT CONVERT(varchar(100), GETDATE(), 108)         :10:57:49

6.  SELECT CONVERT(varchar(100), GETDATE(), 101)   :05/16/2006

7.  SELECT CONVERT(varchar(100), GETDATE(), 102)   :2006.05.16

8.  SELECT CONVERT(varchar(100), GETDATE(), 103)   :16/05/2006

.字符串函?
?度与分析用

datalength(Char_expr) 返回字符串包含字符?,但不包含后面的空格

substring(expression,start,length) 不多?了,取子串

right(char_expr,int_expr) 返回字符串右?int_expr?字符

字符操作?

upper(char_expr) ??大?

lower(char_expr) ??小?

space(int_expr) 生成int_expr?空格

replicate(char_expr,int_expr)复制字符串int_expr次

reverse(char_expr) 反?字符串

stuff(char_expr1,start,length,char_expr2) ?字符串char_expr1中的?

start?始的length?字符用char_expr2代替

ltrim(char_expr) rtrim(char_expr) 取掉空格

ascii(char) char(ascii) ?函???,取ascii?,根据ascii?取字符

字符串查找

charindex(char_expr,expression) 返回char_expr的起始位置

patindex("%pattern%",expression) 返回指定模式的起始位置,否??0

2.??函?

abs(numeric_expr) 求??值

ceiling(numeric_expr) 取大于等于指定值的最小整?

exp(float_expr) 取指?

floor(numeric_expr) 小于等于指定值得最大整?

pi() 3.1415926.........

power(numeric_expr,power) 返回power次方

rand([int_expr]) ?机??生器

round(numeric_expr,int_expr) 安int_expr?定的精度四舍五入

sign(int_expr) 根据正?,0,??,,返回+1,0,-1

sqrt(float_expr) 平方根

3.日期函?

getdate() 返回日期

datename(datepart,date_expr) 返回名?如 June

datepart(datepart,date_expr) 取日期一部份

datediff(datepart,date_expr1.dateexpr2) 日期差

dateadd(datepart,number,date_expr) 返回日期加上 number

上述函?中datepart的

?法 取值和意?

yy 1753-9999 年份

qq 1-4 刻

mm 1-12 月

dy 1-366 日

dd 1-31 日

wk 1-54 周

dw 1-7 周几

hh 0-23 小?

mi 0-59 分?

ss 0-59 秒

ms 0-999 毫秒

日期??

convert()

 

4.系?函?

suser_name() 用?登?名

user_name() 用?在?据?中的名字

user 用?在?据?中的名字

show_role() ??前用?起作用的??

db_name() ?据?名

object_name(obj_id) ?据??象名

col_name(obj_id,col_id) 列名

col_length(objname,colname) 列?度

valid_name(char_expr) 是否是有效??符 

  

跨庫查詢

SELECT * from OpenRowSet('MSDASQL','Driver=SQL Server;Server=servername;Uid=username;PWD=password',databasename.dbo.tablename)

select * into beol.dbo.Calendar_day from calendar_day   //Copy Table Structure and Data

select top 0 * into beol.dbo.Calendar_day from calendar_day //Just Copy Table Structure

抱歉!评论已关闭.