一、 语法:NUMTOYMINTERVAL ( n , 'char_expr' )
char_expr:日期描述,可以是YEAR和MONTH;
作用:可以将数字转换成相应的日期单位时间
比如:NUMTOYMINTERVAL ( 1, 'MONTH' ) 表示一个月,注意:此时跟add_months有点区别,后续有例子会讲到。
NUMTOYMINTERVAL ( 1, 'YEAR' ) 表示一年
对于day、hour、minute、second使用的是numtodsinterval函数,方法和numtoyminterval一样。后面可以跟变量
二、interval后面只能用数字
下面是举例:
SQL> select add_months (to_date('20110228','yyyymmdd'),1) from dual;
ADD_MONTH
---------
31-MAR-11
SQL>
SQL> select add_months(to_date('20110228','yyyymmdd'),-1) from dual;
ADD_MONTH
---------
31-JAN-11
SQL>
SQL>
SQL> select to_date('2007-02-28','yyyy-mm-dd')+numtoyminterval (1,'month') from dual;
TO_DATE('
---------
28-MAR-07
SQL> select to_date('2007-02-28','yyyy-mm-dd')-numtoyminterval (1,'month') from dual;
TO_DATE('
---------
28-JAN-07
此时,注意跟add_months返回结果的区别。
SQL> select to_date('2007-02-28','yyyy-mm-dd')+numtodsinterval(1,'day') from dual;
TO_DATE('
---------
01-MAR-07
SQL>
SQL> select to_date('2007-02-28','yyyy-mm-dd')+interval '+3' hour from dual;
TO_DATE('
---------
28-FEB-07
SQL> select to_date('2007-02-28','yyyy-mm-dd')+interval '+1' month from dual;
TO_DATE('
---------
28-MAR-07
posted @
2013-11-22 10:39 kelly 阅读(640) |
评论 (0) |
编辑 收藏
Double类型不能直接进行比较大小。
非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型,具体BigDecimal的详细说明参考jdk开发帮助文档。public class Test {
public static String compare(BigDecimal val1, BigDecimal val2) {
String result = "";
if (val1.compareTo(val2) < 0) {
result = "第二位数大!";
}
if (val1.compareTo(val2) == 0) {
result = "两位数一样大!";
}
if (val1.compareTo(val2) > 0) {
result = "第一位数大!";
}
return result;
}
public static void main(String[] args) {
String a = "200.5"; String b = "1000";
BigDecimal data1 = new BigDecimal(a);
BigDecimal data2 = new BigDecimal(b);
System.out.print(compare(data1, data2));
}
}
posted @
2013-11-07 15:42 kelly 阅读(1009) |
评论 (0) |
编辑 收藏
经常处理金额,对于输入需要做验证处理,下面给出正则表达式和解释:javascritpt的应用:var patrn=/^(-)?(([1-9]{1}\d*)|([0]{1}))(\.(\d){1,2})?$/;if (!patrn.exec('-012312123.23')) {alert('false');}else{alert('true');}解读/^(-)?(([1-9]{1}\d*)|([0]{1}))(\.(\d){1,2})?$/^表示以什么开头 我们这里是 - ,后面的?是表示“-”出现一次或者零次(([1-9]{1}\d*)|([0]{1})) 表示不以0开头的数字组合或者仅出现一个0(\.(\d){1,2})?表示小数点后两位,出现0次或者一次必须是大于0的金额正则表达式:var patrn=/^(([1-9]{1}\d*)|([0]{1}))(\.(\d){1,2})?$/;Java里的应用:Pattern pattern = Pattern.compile("^(-)?(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){1,2})?$");Matcher matcher = pattern.matcher("-0.11");System.out.println(matcher.matches());
posted @
2013-11-07 13:31 kelly 阅读(2654) |
评论 (0) |
编辑 收藏
今天使用Oracle遇到了这个问题ora-01033:oracle initialization or shutdown in progress,经过分析研究终于解决了,记下来.我遇到的错误是ORA-00600: 内部错误代码,参数: [kcratr1_lostwrt]
分析过程:
运行中输入cmd,、输入sqlplus /nolog,然后用 用sys登陆。
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
E:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 4月 8 14:20:05 2
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect sys/sys as sysdba;
已连接。
SQL> shutdown normal
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter database open;
出现以下错误:
ORA-00600: 内部错误代码,参数: [kcratr1_lostwrt]
出现该错误是因为系统强制关机造成的!
症状为数据库无法打开!
解决这个错误:
SQL> shutdown normal
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL>recover database;
完成介质恢复
SQL> alter database open;
数据库已更改
SQL>exit;
posted @
2013-04-08 14:53 kelly 阅读(663) |
评论 (0) |
编辑 收藏
最近每次启动MyEclipse的时候,都不能自动加载我自己的workspace
通常都要通过File-Switch Workspace来选择一遍才行。
检查了一下问题,发现配置文件X:/MyEclipse6.5/eclipse/configuration/config.ini文件中的osgi.instance.area.default属性被修改为@user.home/workbench
osgi.instance.area.default=@user.home/workbench
等号后面修改为自己的工作空间地址就可以了osgi.instance.area.default=D\:\\Workspaces
posted @
2013-02-20 14:26 kelly 阅读(534) |
评论 (0) |
编辑 收藏