十二 17

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。  

这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:  

mysql> SELECT something FROM table  
WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) < = 30;  

DAYOFWEEK(date)  
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。  
mysql> select DAYOFWEEK('1998-02-03');  
-> 3  

WEEKDAY(date)  
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。  
mysql> select WEEKDAY('1997-10-04 22:23:00');  
-> 5  
mysql> select WEEKDAY('1997-11-05');  
-> 2  

DAYOFMONTH(date)  
返回date的月份中日期,在1到31范围内。  
mysql> select DAYOFMONTH('1998-02-03');  
-> 3  

DAYOFYEAR(date)  
返回date在一年中的日数, 在1到366范围内。  
mysql> select DAYOFYEAR('1998-02-03');  
-> 34  

MONTH(date)  
返回date的月份,范围1到12。  
mysql> select MONTH('1998-02-03');  
-> 2  

DAYNAME(date)  
返回date的星期名字。  
mysql> select DAYNAME(“1998-02-05″);  
-> 'Thursday'  

MONTHNAME(date)  
返回date的月份名字。  
mysql> select MONTHNAME(“1998-02-05″);  
-> 'February'  

QUARTER(date)  
返回date一年中的季度,范围1到4。  
mysql> select QUARTER('98-04-01');  
-> 2  

WEEK(date)  
   
WEEK(date,first)  
对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许
你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,
从星期一开始。  
mysql> select WEEK('1998-02-20');  
-> 7  
mysql> select WEEK('1998-02-20',0);  
-> 7  
mysql> select WEEK('1998-02-20',1);  
-> 8  

YEAR(date)  
返回date的年份,范围在1000到9999。  
mysql> select YEAR('98-02-03');   更多详细内容 »

Tags:

作者:Jock

十二 05

数学函数

  1.绝对值
  S:select abs(-1) value
  O:select abs(-1) value from dual

  2.取整(大)
  S:select ceiling(-1.001) value
  O:select ceil(-1.001) value from dual

  3.取整(小)
  S:select floor(-1.001) value
  O:select floor(-1.001) value from dual

  4.取整(截取)
  S:select cast(-1.002 as int) value
  O:select trunc(-1.002) value from dual

  5.四舍五入
  S:select round(1.23456,4) value 1.23460
  O:select round(1.23456,4) value from dual 1.2346

  6.e为底的幂
  S:select Exp(1) value 2.7182818284590451
  O:select Exp(1) value from dual 2.71828182

  7.取e为底的对数
  S:select log(2.7182818284590451) value 1
  O:select ln(2.7182818284590451) value from dual; 1

  8.取10为底对数
  S:select log10(10) value 1
  O:select log(10,10) value from dual; 1

  9.取平方
  S:select SQUARE(4) value 16
  O:select power(4,2) value from dual 16

  10.取平方根
  S:select SQRT(4) value 2
  O:select SQRT(4) value from dual 2

  11.求任意数为底的幂
  S:select power(3,4) value 81
  O:select power(3,4) value from dual 81

  12.取随机数
  S:select rand() value
  O:select sys.dbms_random.value(0,1) value from dual;

  13.取符号
  S:select sign(-8) value -1
  O:select sign(-8) value from dual -1

  14.圆周率
  S:SELECT PI() value 3.1415926535897931
  O:不知道

  15.sin,cos,tan 参数都以弧度为单位
  例如:select sin(PI()/2) value 得到1(SQLServer)

  16.Asin,Acos,Atan,Atan2 返回弧度

  17.弧度角度互换(SQLServer,Oracle不知道)
  DEGREES:弧度-〉角度
  RADIANS:角度-〉弧度

数值间比较 更多详细内容 »

Tags:

作者:Jock

十二 05

1、add_months()用于从一个日期值增加或减少一些月份
date_value:=add_months(date_value,number_of_months)
select add_months(sysdate,12) “Next Year” from dual;

2、current_date()返回当前会放时区中的当前日期
date_value:=current_date

3、dbtimezone()返回时区
  varchar_value:=dbtimezone
  select dbtimezone from dual;

4、extract()找出日期或间隔值的字段值
  date_value:=extract(date_field from [datetime_value|interval_value])
  SQL> select extract(month from sysdate) “This Month” from dual;

5、last_day()返回包含了日期参数的月份的最后一天的日期
  date_value:=last_day(date_value)
  SQL> select last_day(date'2000-02-01') “Leap Yr?” from dual;

6、localtimestamp()返回会话中的日期和时间
  timestamp_value:=localtimestamp
  SQL> column localtimestamp format a28
  SQL> select localtimestamp from dual;

7、months_between()判断两个日期之间的月份数量
  number_value:=months_between(date_value,date_value)
  SQL> select months_between(sysdate,date'1971-05-18') from dual;

8、next_day()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)
更多详细内容 »

Tags:

作者:Jock

十二 05

1、游标的声明
块的DECLARATION部分给游标命名,并为他配备一个SELECT语句,就完成了游标的定义。
具体语法
CURSOR cursor_name [parameter_list]
[RETURN return_type]
IS query
[FOR UPDATE [OF (column_list)] [NOWAIT]];

2、游标的打开
OPEN author_cur1;
如果带有参数的列表的游标
OPEN author_cur1(50);
在这种情况下,传递给OPEN命令的值和绑定变量的值已经确定。这个值是不会在发生更改的,因此结果集也不会变化,除非将游标关闭然后重新打开。

3、记录的获取
语法:
fetch cursor_name into variable_name(s) | PL/SQL_record;

只有一列的
fetch author_cur into v_rowid;
游标返回多行记录,并且需要多个变量时,大致如下
fetch author_cur into v_first_name,v_last_name;
在这种情况下,游标author_cur的select语句中必须含有first_name,lase_name这两列,而且顺序不能颠倒。游标不能再包含其它列。

如果游标包含一条完整记录,就可以使用PL/SQL记录来代替变量:
declare
  v_author authors%rowtype;
begin

  fetch author_cur into v_author;



v_author变量包含了一条完整记录,v_author.column_name获取每个列的值。

4、游标的关闭
close cursor_name;
其中cursor_name是已经处于打开状态的游标的名称。

5、游标的属性
%bulk_exceptions
%bulk_rowcount
%found
%isopen
%notfound
%rowcount

6、使用loop遍历游标

loop
 fetch auth_cur into v_author;
 exit when auth_cur%notfound;
 …
end loop

fetch auth_cur into v_author;
while auth_cur%found loop
 ..
 fetch auth_cur into v_author;
end loop

for v_author in auth_cur
loop

end loop

Tags:

作者:Jock

十一 23

Quest Toad for Oracle Xpert 9.0 download
http://worlddownloads.quest.com.edgesuite.net/Repository/www.quest.com/latest_versions/ToadforOracleXpertEdition_90.EXE

8.6的key还能用。

作者:Jock

Switch to our mobile site