查看文章
 
sql 日期函数
2008-05-12 10:43

深圳公司

                                     

字符函数举例:

全小写    LOWER('SQL Course')     sql course

全大写 UPPER('SQL Course')       SQL COURSE

首字母大写 INITCAP('SQL Course')      Sql Course
拼接 CONCAT('Good', 'String')       GoodString
取子串    SUBSTR('String',1,3)         Str
求长度     LENGTH('String')     6

===================================================

数字函数举例:
ROUND -- 对数值进行四舍五入操作
TRUNC -- 截断。注意截断和舍入的位数,可以是负数。
ROUND (45.923, 2)      45.92
ROUND (45.923, 0)      46
ROUND (45.923, -1)      50
TRUNC (45.923, 2)      45.92
TRUNC (45.923)      45
TRUNC (45.923, -1)      40

MOD -- 返回两数相除的余数

MOD(1600, 300) -- 100

====================================================

日期函数:
•Oracle将日期按照内部格式将日期存成以下七个字节-世纪、年、月、日、时、分、秒。•在Oracle中日期缺省的显示格式为:DD - MON - YY 。•可以使用系统变量    SYSDATE 获取系统时间•。查看 SYSDATE时,可以使用虚拟表DUAL。

举例:
求两个日期间有多少个月份     MONTHS_BETWEEN('01-SEP-95','11-JAN-94')        1.9774194
在日期上加指定的月数           ADD_MONTHS('11-JAN-94',6)                                  '11-JUL-94'
下一个星期几是什么时候        NEXT_DAY('01-SEP-95','FRIDAY')                            '08-SEP-95'
某月最后一天                              LAST_DAY('01-SEP-95')                                            '30-SEP-95'

把日期四舍五入到月份              ROUND('25-MAY-95','MONTH')                               01-JUN-95
                                                      ROUND('25-MAY-95 ','YEAR')                                   01-JAN-95
把日期截断到月份                      TRUNC('25-MAY-95 ','MONTH')                                01-MAY-95
                                                      TRUNC('25-MAY-95 ','YEAR')                                    01-JAN-95

*NEXT_DAY()函数的第二个参数在8i 中为英文,在9i 中为中文 ('星期二','星期三')

*又一个强劲函数

select dateadd(interval , number, date) from dual;
interval=[Q | D | YYYY | W | H | N | M | S]
Q 季度, D 天, YYYY 年, H 小时, N 分钟, M 月, S 秒。
num 为要加的天数
date 为基准日期
例如:取当前日期3月后的日期 select dateadd('M', 3 , sysdate) from dual

==========================================================

转换函数

TO_CHAR 将数字或日期转换为字符串
TO_NUMBER 将字符串转换成数字
TO_DATE 将字符串转换成日期 to_date(cjsj,'yyyy-mm-dd')

取月份: to_char(sysdate,'mm')

在转换函数中会使用格式串


TO_CHAR(date, 'fmt')
格式串包含在''中, 大小写敏感, 可以是任意有效的日期
格式
格式串:
YYYY 表示完整的四位数字年
YEAR 表示英文拼写的年
MM 表示两位数字月
MONTH 表示英文全拼的年
DY 表示三位缩写的星期
DAY 表示英文全拼的星期


一些特殊用法:
时间格式
              HH24:MI:SS AM    15:45:32 PM
在格式串中加入字符串
              DD " of " MONTH    12 of OCTOBER
用后缀拼出整个日期
              ddspth    fourteenth


TO_CHAR(number, 'fmt')
使用此函数将数字转换成数字
      9    表示数字
      0    强制为0
      $    设置美元符号
      L    使用当前字符集的货币符号
      .    小数点
      ,    千位分隔符


可以使用TO_NUMBER将字符串转换成数字
可以使用TO_DATE将字符串转换成格式日期
TO_DATE ('10 September 1992', 'dd Month YYYY')


使用格式串
TO_DATE(char    [, 'fmt'])

取当前日期为本月的第几周
SELECT TO_CHAR(SYSDATE,'W') FROM DUAL;
取当前日期为本年的第几周
SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;

=====================================================

普通函数
NULL值处理函数


NVL (expr1, expr2)
      如果expr1为NULL,返回expr2
NVL2 (expr1, expr2, expr3)
      如果expr1为非空,则返回expr2,如果expr1为NULL,则返回expr3
NULLIF (expr1, expr2)
      如果expr1=expr2,返回NULL,否则返回expr1

COALESCE (expr1, expr2, ..., exprn)
      返回表达式列表中的第一个非空表达式


条件表达式,用case表达式或decode实现条件逻辑
CASE表达式
CASE expr WHEN comparison_expr1 THEN return_expr1
           [WHEN comparison_expr2 THEN return_expr2
            WHEN comparison_exprn THEN return_exprn
            ELSE else_expr]
END

decode函数
DECODE(col|expression, search1, result1
[, search2,result2,...,]
         [, default])

=====================================================

分组函数:
AVG (DISTINCT|ALL|n)
COUNT (DISTINCT|ALL|expr|*)
MAX (DISTINCT|ALL|expr)
MIN (DISTINCT|ALL|expr)
STDDEV (DISTINCT|ALL|n)
SUM (DISTINCT|ALL|n)
VARIANCE (DISTINCT|ALL|n)


 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu