public static void main(String[] args) throws IOException {
for (int j=0 ; j<18 ; j++){
for (int i =2 ; i<=5 ; i++){
if (j<9){
System.out.print(i + " * " + (j%9+1) + " = " + i*(j%9+1) + "\t");
}else{
System.out.print((i+4) + " * " + (j%9+1) + " = " + (i+4)*(j%9+1) + "\t");
}
}
if (j==8){
System.out.println();
}
System.out.println();
}
}
2011年12月28日 星期三
2011年12月16日 星期五
設定字體 java.awt.Font
.setFont(new Font("新細明體", Font.PLAIN, 12));
其中 Font.XXXX; XXX=
PLAIN 一般
BOLD 粗體
ITALIC 協體
BOLD_ ITALIC 粗斜體
其中 Font.XXXX; XXX=
PLAIN 一般
BOLD 粗體
ITALIC 協體
BOLD_ ITALIC 粗斜體
2011年12月15日 星期四
javax.swing.JTable.setAutoResizeMode
setAutoResizeMode
public void setAutoResizeMode(int mode)
當調整表的大小時,設置表的自動調整網要。
參數:
mode - 5 個合法值之一:
AUTO_RESIZE_OFF
初始:完全沒有調整
調整:不會影響其他行
AUTO_RESIZE_NEXT_COLUMN
初始:平均展開
調整:不會影響其他行
AUTO_RESIZE_SUBSEQUENT_COLUMNS
初始:平均展開
調整:調整哪邊影響哪邊之後的columns
AUTO_RESIZE_LAST_COLUMN
初始:平均展開
調整:調整僅影響右邊之後的columns
AUTO_RESIZE_ALL_COLUMNS
初始:平均展開
調整:調整兩邊columns皆會影響
另請參見:
2011年12月14日 星期三
民國轉西元
public static String convertTWDateToADDate(String twDate) {
String addate = "";
if (twDate.length() != 7)
return "";
try {
int yy = Integer.valueOf(twDate.substring(0, 3)).intValue() + 1911;
String year = String.valueOf(yy);
String month = twDate.substring(3, 5);
String day = twDate.substring(5, 7);
addate = year + "-" + month + "-" + day;
} catch (Exception ignore) {
addate = "";
}
return addate;
}
String addate = "";
if (twDate.length() != 7)
return "";
try {
int yy = Integer.valueOf(twDate.substring(0, 3)).intValue() + 1911;
String year = String.valueOf(yy);
String month = twDate.substring(3, 5);
String day = twDate.substring(5, 7);
addate = year + "-" + month + "-" + day;
} catch (Exception ignore) {
addate = "";
}
return addate;
}
2011年12月12日 星期一
秀出路徑下的所有檔案名稱列表
public static void PrintDirFileList(String dir){
//記得Windows上面要加上雙斜線喔
File file = new File(dir);
String[] filelist = file.list();
for (int i = 0; i < filelist.length ; i++){
File tempFile = new File(file.getPath() + "\\" + filelist[i]);
if (tempFile.isDirectory()){
// 若是資料夾則繼續搜尋列表
PrintDirFileList(tempFile.getPath());
}else{
// 檔案路徑
System.out.println(tempFile.getPath());
// 若否則列出檔案名稱
System.out.println(tempFile.getName());
}
}
}
2011年11月27日 星期日
URL 傳值中文編碼&解碼
// 網址
String tempStr = "http://wwwtest.etax.nat.gov.tw/newReport/createReport/Report35_n_Generator.jsp?reportName=TAX35_n&p_cat=351_%E5%9C%8B%E9%9A%9B%E9%81%8B%E8%BC%B8%20&hsn_cd=A&ban=47249755&dst_cd=001&dst_cd_m=03&dst_nm=%E8%B2%A1%E6%94%BF%E9%83%A8%E8%87%BA%E5%8C%97%E5%B8%82%E5%9C%8B%E7%A8%85%E5%B1%80&town_cd=00&be_name=%E7%A5%9E%E9%80%9A%E9%9B%BB%E8%85%A6%E8%82%A1%E4%BB%BD%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&be_add=%E8%87%BA%E5%8C%97%E5%B8%82%E5%85%A7%E6%B9%96%E5%8D%80%E6%B8%AF%E5%A2%98%E9%87%8C%E5%A0%A4%E9%A0%82%E5%A4%A7%E9%81%93%EF%BC%92%E6%AE%B5%EF%BC%91%EF%BC%98%EF%BC%97%E8%99%9F&be_owner=%E8%8B%97%E8%B1%90%E5%BC%B7&ear_name=testttt&ear_add=testt&ear_owner=twestt&ear_yyy=099&ear_mm=09&gd_yyy=099&gd_mm=09&gd_dd=09&pay_yyy=099&pay_mm=09&pay_dd=18&pw_amt=4277590&b_yy=99&b_mm=09&barcode1=9909226AE&barcode2=A030047249755990909&barcode3=3513J0004277590&tax_cd=35&sub_tax_cd=1&print_date=2011%E5%B9%B411%E6%9C%8828%E6%97%A5%2011%E6%99%8241%E5%88%8654%E7%A7%92&fee=6&area1=%E8%87%BA%E5%8C%97%E5%B8%82&area2=%E4%BF%A1%E7%BE%A9%E5%8D%80&cha=%E2%96%A0&chb=%E2%96%A1&chc=%E2%96%A1&chd=%E2%96%A1&che=20&auto_amt_n=%E2%96%A1&auto_amt_y=%E2%96%A1&be_tel=0987546213&chf=&pw_amt_n=4%2C277%2C590" ;
// 先將參數和網址分開
String Str1[] = tempStr.split("\\?");
// 導向頁面
String ProStr[] = Str1[0].split("/");
System.out.println(ProStr[ProStr.length -1]);
// 各參數
String ValuesStr[] = Str1[1].split("&");
for (int i=0 ; i<ValuesStr.length ; i++){
if (ValuesStr[i].indexOf('%') == -1){
System.out.println(ValuesStr[i]);
}else{
String innerStr = URLDecoder.decode(ValuesStr[i],"UTF-8");
System.out.println(innerStr);
}
}
String tempStr = "http://wwwtest.etax.nat.gov.tw/newReport/createReport/Report35_n_Generator.jsp?reportName=TAX35_n&p_cat=351_%E5%9C%8B%E9%9A%9B%E9%81%8B%E8%BC%B8%20&hsn_cd=A&ban=47249755&dst_cd=001&dst_cd_m=03&dst_nm=%E8%B2%A1%E6%94%BF%E9%83%A8%E8%87%BA%E5%8C%97%E5%B8%82%E5%9C%8B%E7%A8%85%E5%B1%80&town_cd=00&be_name=%E7%A5%9E%E9%80%9A%E9%9B%BB%E8%85%A6%E8%82%A1%E4%BB%BD%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&be_add=%E8%87%BA%E5%8C%97%E5%B8%82%E5%85%A7%E6%B9%96%E5%8D%80%E6%B8%AF%E5%A2%98%E9%87%8C%E5%A0%A4%E9%A0%82%E5%A4%A7%E9%81%93%EF%BC%92%E6%AE%B5%EF%BC%91%EF%BC%98%EF%BC%97%E8%99%9F&be_owner=%E8%8B%97%E8%B1%90%E5%BC%B7&ear_name=testttt&ear_add=testt&ear_owner=twestt&ear_yyy=099&ear_mm=09&gd_yyy=099&gd_mm=09&gd_dd=09&pay_yyy=099&pay_mm=09&pay_dd=18&pw_amt=4277590&b_yy=99&b_mm=09&barcode1=9909226AE&barcode2=A030047249755990909&barcode3=3513J0004277590&tax_cd=35&sub_tax_cd=1&print_date=2011%E5%B9%B411%E6%9C%8828%E6%97%A5%2011%E6%99%8241%E5%88%8654%E7%A7%92&fee=6&area1=%E8%87%BA%E5%8C%97%E5%B8%82&area2=%E4%BF%A1%E7%BE%A9%E5%8D%80&cha=%E2%96%A0&chb=%E2%96%A1&chc=%E2%96%A1&chd=%E2%96%A1&che=20&auto_amt_n=%E2%96%A1&auto_amt_y=%E2%96%A1&be_tel=0987546213&chf=&pw_amt_n=4%2C277%2C590" ;
// 先將參數和網址分開
String Str1[] = tempStr.split("\\?");
// 導向頁面
String ProStr[] = Str1[0].split("/");
System.out.println(ProStr[ProStr.length -1]);
// 各參數
String ValuesStr[] = Str1[1].split("&");
for (int i=0 ; i<ValuesStr.length ; i++){
if (ValuesStr[i].indexOf('%') == -1){
System.out.println(ValuesStr[i]);
}else{
String innerStr = URLDecoder.decode(ValuesStr[i],"UTF-8");
System.out.println(innerStr);
}
}
2011年11月22日 星期二
Error:The literal 1000000000000 of type int is out of range
明明是宣告 long 的型態,卻出現 The literal 1000000000000 of type int is out of range 的訊息
基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308
基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535
原來在 1000000000000後面加上1000000000000L就解決了
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308
基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535
原來在 1000000000000後面加上1000000000000L就解決了
2011年11月21日 星期一
計算程式執行時間 - System.currentTimeMillis()
long StartTime = System.currentTimeMillis(); // 取出目前時間
// ==============================
// 你的程式
// ==============================
long ProcessTime = System.currentTimeMillis() - StartTime; // 計算處理時間
System.out.println( ProcessTime); // 累積計算時間
http://mqjing.blogspot.com/2007/03/java.html
// ==============================
// 你的程式
// ==============================
long ProcessTime = System.currentTimeMillis() - StartTime; // 計算處理時間
System.out.println( ProcessTime); // 累積計算時間
http://mqjing.blogspot.com/2007/03/java.html
2011年11月17日 星期四
數字格式化 to ("$$$,$$$,$$$")
public class TestCode {
public static void main(String[] args) {
// 先將字串轉成數字 再轉回字串
String str = Integer.toString(Integer.parseInt("-123567890")) ;
int k = 0 ;
if (str.indexOf(",") == -1) {
for (k = 0; k < Math.floor((str.length()-(1+k))/3); k++){
// System.out.println(k + " < " + Math.floor((str.length()-(1+k))/3));
// System.out.println("str.length() - (4*k+3): " + Integer.toString((str.length()-(4*k+3))));
// 取出第一個逗號以前的字串
String u = str.substring(0, str.length() - (4*k+3)) ;
if ( !u.equals("-")){ // 若前面的字串為 "-" ,則取消組合。
// 取出第一個逗號以後的字串
String l = str.substring(str.length() - (4*k+3)) ;
// 組合
str = u + ',' + l ;
}
}
}
// System.out.println(k + " < " + Math.floor((str.length()-(1+k))/3));
System.out.println(str);
}
}
public static void main(String[] args) {
// 先將字串轉成數字 再轉回字串
String str = Integer.toString(Integer.parseInt("-123567890")) ;
int k = 0 ;
if (str.indexOf(",") == -1) {
for (k = 0; k < Math.floor((str.length()-(1+k))/3); k++){
// System.out.println(k + " < " + Math.floor((str.length()-(1+k))/3));
// System.out.println("str.length() - (4*k+3): " + Integer.toString((str.length()-(4*k+3))));
// 取出第一個逗號以前的字串
String u = str.substring(0, str.length() - (4*k+3)) ;
if ( !u.equals("-")){ // 若前面的字串為 "-" ,則取消組合。
// 取出第一個逗號以後的字串
String l = str.substring(str.length() - (4*k+3)) ;
// 組合
str = u + ',' + l ;
}
}
}
// System.out.println(k + " < " + Math.floor((str.length()-(1+k))/3));
System.out.println(str);
}
}
2011年11月16日 星期三
String.equals()和String.equalsIgnoreCase()的區別
boolean | equals(Object anObject) 將此字元串與指定的物件比較。 |
boolean | equalsIgnoreCase(String anotherString) 將此 String 與另一個 String 比較,不考慮大小寫。 |
String.equals()會考慮大小寫,而String.equalsIgnoreCase()會忽略大小寫
2011年11月14日 星期一
JFrame 置中的方法
一個最簡單的方法就是先設定其大小,在設定相對位置:
setSize(800, 600);
setLocationRelativeTo(null);
另一個就是利用運算將中心點算出
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setSize(800, 600);
setLocation((d.width-getWidth())/2, (d.height-getHeight())/2);
setSize(800, 600);
setLocationRelativeTo(null);
另一個就是利用運算將中心點算出
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setSize(800, 600);
setLocation((d.width-getWidth())/2, (d.height-getHeight())/2);
如何交換兩個變數,而不動用第三個變數? (C/C++) (C) (.NET) (C#)
http://www.cnblogs.com/oomusou/archive/2007/09/09/887337.html
若要兩數交換,可以這樣寫。
但執行速度上會比使用暫存變數來的慢些!
public class TestCode {
public static void main(String[] args) {
int A = 3;
int B = 7;
System.out.println("A:" + A + " B:" + B);
A = A ^ B ;
B = A ^ B ;
A = A ^ B ;
System.out.println("A:" + A + " B:" + B);
);
}
}
若要兩數交換,可以這樣寫。
x = x xor y
y = x xor y
x = x xor y
y = x xor y
x = x xor y
但執行速度上會比使用暫存變數來的慢些!
public class TestCode {
public static void main(String[] args) {
int A = 3;
int B = 7;
System.out.println("A:" + A + " B:" + B);
A = A ^ B ;
B = A ^ B ;
A = A ^ B ;
System.out.println("A:" + A + " B:" + B);
);
}
}
2011年11月13日 星期日
搜尋特定目錄位置的檔案清單
import java.io.File;
import java.io.IOException;
public class TestCode {
public static void main(String[] args) {
//CreateDir();
String path = "D:/Documents/My Work/線上申辦/線上申辦 程式說明文件";
File f = new File(path);
if( f.exists()){ // 確認檔案路徑是否存在
if (f.isDirectory()){ // 確認是否為資料夾
String temp[] = f.list(); // 取出該路徑下檔案清單
for (int i =0 ; i<temp.length ; i++){
System.out.println(temp[i]);
String tempSplit[] = temp[i].split("\\.");
for (int j=0 ; j<tempSplit.length ; j++){
System.out.println(tempSplit[j]);
}
if (tempSplit[tempSplit.length-1].equals("doc")){
String si = path + "/" + temp[i];
// System.out.println(si);
File fi = new File(si);
String so = path + "/"+ tempSplit[0] + "." + tempSplit[1] + ".1." + tempSplit[3];
File fo = new File(so);
// System.out.println(so);
fi.renameTo(fo); // 將檔名更改
String s1[] = si.split("/");
String s2[] = so.split("/");
System.out.println(s1[s1.length-1] + " --> " + s2[s2.length-1]);
}
}
}
}
}
import java.io.IOException;
public class TestCode {
public static void main(String[] args) {
//CreateDir();
String path = "D:/Documents/My Work/線上申辦/線上申辦 程式說明文件";
File f = new File(path);
if( f.exists()){ // 確認檔案路徑是否存在
if (f.isDirectory()){ // 確認是否為資料夾
String temp[] = f.list(); // 取出該路徑下檔案清單
for (int i =0 ; i<temp.length ; i++){
System.out.println(temp[i]);
String tempSplit[] = temp[i].split("\\.");
for (int j=0 ; j<tempSplit.length ; j++){
System.out.println(tempSplit[j]);
}
if (tempSplit[tempSplit.length-1].equals("doc")){
String si = path + "/" + temp[i];
// System.out.println(si);
File fi = new File(si);
String so = path + "/"+ tempSplit[0] + "." + tempSplit[1] + ".1." + tempSplit[3];
File fo = new File(so);
// System.out.println(so);
fi.renameTo(fo); // 將檔名更改
String s1[] = si.split("/");
String s2[] = so.split("/");
System.out.println(s1[s1.length-1] + " --> " + s2[s2.length-1]);
}
}
}
}
}
2011年11月11日 星期五
2011年11月4日 星期五
建造指定目錄
/**
* 建造指定目錄
* 此方式會將vatrefund視為檔案= =?
*/
* 建造指定目錄
* 此方式會將vatrefund視為檔案= =?
*/
public static void CreateDir(){ System.out.println(); //String filePath = "WEB-INF/classes/com/hyweb/gip/vatrefund/123"; String filePath = "javagip/gipadmin/site/public/Data/vatReport/123"; File file = new File(filePath); if(!file.exists()) { file.getParentFile().mkdirs(); //File Delfile = new File(filePath); //Delfile.deleteOnExit(); try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2011年11月3日 星期四
第一個Java程式的基本程式結構
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/FirstJava.htm
首先請編輯一個HelloWorld.java的文字檔案,注意副檔名是*.java, 請記得主檔名,因為程式碼中要用到它,您的第一個程式是這樣的:
寫Java程式通常都是由定義「類別」開始,
"class"是Java 用來定義類別的關鍵字,
類別的名稱是HelloWorld,這與您所編輯的檔案(HelloWorld.java)主檔名必須相同,
在編寫Java程式 時,一個檔案中可撰寫數個類別,但是只能有一個"public" 類別, 而且檔案主檔名必須與這個"public"類別的名稱相同。
接下來看看 main() 方法(Method),它是Java程式的「進入點」 (Entry point), 程式的執行是由進入點開始的,它一定是個"public" 成員(Member), 這樣它才可以被呼叫;由於它不需要產生物件就要能被執行,所以它必須是個"static"成員。
(public與static的觀念都是物件導向程式上的觀念,之後討論類別與物件時會再看到)
"void"表示這個方法執 行結束後不傳回任何值,Java程式的主 方法不需傳回任何值,所以一律使用void;main()是Java程式的 主方法名稱,其中"String[] args"是 命令列引數 (Command line argument),可以在執行程式時取得使用者指定的相關參數,目前雖然您不使用,但仍要撰寫它,這是規定,args只是個參數名稱,可以隨意命名。你 也可以寫成"String args[]",這是彷造C語言的語法,但Java中偏好"String[] args"的寫法。
首先請編輯一個HelloWorld.java的文字檔案,注意副檔名是*.java, 請記得主檔名,因為程式碼中要用到它,您的第一個程式是這樣的:
- HelloWorld.java
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello! World!"); } }
寫Java程式通常都是由定義「類別」開始,
"class"是Java 用來定義類別的關鍵字,
類別的名稱是HelloWorld,這與您所編輯的檔案(HelloWorld.java)主檔名必須相同,
在編寫Java程式 時,一個檔案中可撰寫數個類別,但是只能有一個"public" 類別, 而且檔案主檔名必須與這個"public"類別的名稱相同。
接下來看看 main() 方法(Method),它是Java程式的「進入點」 (Entry point), 程式的執行是由進入點開始的,它一定是個"public" 成員(Member), 這樣它才可以被呼叫;由於它不需要產生物件就要能被執行,所以它必須是個"static"成員。
(public與static的觀念都是物件導向程式上的觀念,之後討論類別與物件時會再看到)
"void"表示這個方法執 行結束後不傳回任何值,Java程式的主 方法不需傳回任何值,所以一律使用void;main()是Java程式的 主方法名稱,其中"String[] args"是 命令列引數 (Command line argument),可以在執行程式時取得使用者指定的相關參數,目前雖然您不使用,但仍要撰寫它,這是規定,args只是個參數名稱,可以隨意命名。你 也可以寫成"String args[]",這是彷造C語言的語法,但Java中偏好"String[] args"的寫法。
2011年10月31日 星期一
Oracle日期格式總結
http://give.pixnet.net/blog/post/25468322
在oracle中處理日期大全
TO_DATE格式
Day
24小時格式下時間範圍為: 0:00:00 - 23:59:59....
12小時格式下時間範圍為: 1:00:00 - 12:59:59 ....
1.
日期和字符轉換函數用法(to_date,to_char)
2.
select to_char( to_date(222,'J'),'Jsp') from dual
顯示Two Hundred Twenty-Two
3.
求某天是星期幾
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
星期一
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
monday
設置日期語言
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
也可以這樣
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
4.
兩個日期間的天數
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5. 時間為null的用法
select id, active_date from table1
UNION
select 1, TO_DATE(null) from dual;
注意要用TO_DATE(null)
6.
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那麼12月31號中午12點之後和12月1號的12點之前是不包含在這個範圍之內的。
所以,當時間需要精確的時候,覺得to_char還是必要的
7. 日期格式衝突問題
輸入的格式要看你安裝的ORACLE字符集的類型, 比如: US7ASCII, date格式的類型就是: '01-Jan-01'
alter system set NLS_DATE_LANGUAGE = American
alter session set NLS_DATE_LANGUAGE = American
或者在to_date中寫
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
注意我這只是舉了NLS_DATE_LANGUAGE,當然還有很多,
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS
8.
select count(*)
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
)
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
not
in ( '1', '7' )
查找2002-02-28至2002-02-01間除星期一和七的天數
在前後分別調用DBMS_UTILITY.GET_TIME, 讓後將結果相減(得到的是1/100秒, 而不是毫秒).
9.
select months_between(to_date('01-31-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1
select months_between(to_date('02-01-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1.03225806451613
10. Next_day的用法
Next_day(date, day)
Monday-Sunday, for format code DAY
Mon-Sun, for format code DY
1-7, for format code D
11
select to_char(sysdate,'hh:mi:ss') TIME from all_objects
注意:第一條記錄的TIME 與最後一行是一樣的
可以建立一個函數來處理這個問題
create or replace function sys_date return date is
begin
return sysdate;
end;
select to_char(sys_date,'hh:mi:ss') from all_objects;
12.
獲得小時數
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
SQL> select sysdate ,to_char(sysdate,'hh') from dual;
SYSDATE TO_CHAR(SYSDATE,'HH')
-------------------- ---------------------
2003-10-13 19:35:21 07
SQL> select sysdate ,to_char(sysdate,'hh24') from dual;
SYSDATE TO_CHAR(SYSDATE,'HH24')
-------------------- -----------------------
2003-10-13 19:35:21 19
獲取年月日與此類似
13.
年月日的處理
select older_date,
newer_date,
years,
months,
abs(
trunc(
newer_date-
add_months( older_date,years*12+months )
)
) days
from ( select
trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )),
12 ) MONTHS,
newer_date,
older_date
from ( select hiredate older_date,
add_months(hiredate,rownum)+rownum newer_date
from emp )
)
14.
處理月份天數不定的辦法
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual
16.
找出今年的天數
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
閏年的處理方法
to_char( last_day( to_date('02' || :year,'mmyyyy') ), 'dd' )
如果是28就不是閏年
17.
yyyy與rrrr的區別
'YYYY99 TO_C
------- ----
yyyy 99 0099
rrrr 99 1999
yyyy 01 0001
rrrr 01 2001
18.不同時區的處理
select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
from dual;
19.
5秒鐘一個間隔
Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')
from dual
2002-11-1 9:55:00 35786
SSSSS表示5位秒數
20.
一年的第幾天
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
310 2002-11-6 10:03:51
21.計算小時,分,秒,毫秒
select
Days,
A,
TRUNC(A*24) Hours,
TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
from
(
select
trunc(sysdate) Days,
sysdate - trunc(sysdate) A
from dual
)
select * from tabname
order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');
//
floor((date2-date1) /365) 作為年
floor((date2-date1, 365) /30) 作為月
mod(mod(date2-date1, 365), 30)作為日.
23.next_day函數
next_day(sysdate,6)是從當前開始下一個星期五。後面的數字是從星期日開始算起。
1 2 3 4 5 6 7
日 一 二 三 四 五 六
oracle中有很多關於日期的函數
在oracle中有很多關於日期的函數,如:
1、add_months()用於從一個日期值增加或減少一些月份
date_value:=add_months(date_value,number_of_months)
例:
SQL> select add_months(sysdate,12) "Next Year" from dual;
Next Year
----------
13-11月-04
SQL> select add_months(sysdate,112) "Last Year" from dual;
Last Year
----------
13-3月 -13
SQL>
2、current_date()返回當前會放時區中的當前日期
date_value:=current_date
SQL> column sessiontimezone for a15
SQL> select sessiontimezone,current_date from dual;
SESSIONTIMEZONE CURRENT_DA
--------------- ----------
+08:00 13-11月-03
SQL> alter session set time_zone='-11:00'
2 /
會話已更改。
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11月-03 04.59.13.668000 下午 -11:
00
SQL>
3、current_timestamp()以timestamp with time zone數據類型返回當前會放時區中的當前日期
timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
SQL> column sessiontimezone for a15
SQL> column current_timestamp format a36
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
+08:00 13-11月-03 11.56.28.160000 上午 +08:
00
SQL> alter session set time_zone='-11:00'
2 /
會話已更改。
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11月-03 04.58.00.243000 下午 -11:
00
SQL>
4、dbtimezone()返回時區
varchar_value:=dbtimezone
SQL> select dbtimezone from dual;
DBTIME
------
-07:00
SQL>
5、extract()找出日期或間隔值的字段值
date_value:=extract(date_field from [datetime_value|interval_value])
SQL> select extract(month from sysdate) "This Month" from dual;
This Month
----------
11
SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;
3 Years Out
-----------
2006
SQL>
6、last_day()返回包含了日期參數的月份的最後一天的日期
date_value:=last_day(date_value)
SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;
Leap Yr?
----------
29-2月 -00
SQL> select last_day(sysdate) "Last day of this month" from dual;
Last day o
----------
30-11月-03
SQL>
7、localtimestamp()返回會話中的日期和時間
timestamp_value:=localtimestamp
SQL> column localtimestamp format a28
SQL> select localtimestamp from dual;
LOCALTIMESTAMP
----------------------------
13-11月-03 12.09.15.433000
下午
SQL> select localtimestamp,current_timestamp from dual;
LOCALTIMESTAMP CURRENT_TIMESTAMP
---------------------------- ------------------------------------
13-11月-03 12.09.31.006000 13-11月-03 12.09.31.006000 下午 +08:
下午 00
SQL> alter session set time_zone='-11:00';
會話已更改。
SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual;
LOCALTIMESTAMP SYSDATE
---------------------------- ------------------------
12-11月-03 05.11.31.259000 13-11-2003 12:11:31 下午
下午
SQL>
8、months_between()判斷兩個日期之間的月份數量
number_value:=months_between(date_value,date_value)
SQL> select months_between(sysdate,date'1971-05-18') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18')
----------------------------------------
389.855143
SQL> select months_between(sysdate,date'2001-01-01') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')
----------------------------------------
34.4035409
SQL>
9、next_day()給定一個日期值,返回由第二個參數指出的日子第一次出現在的日期值(應返回相應日子的名稱字符串)
與周相關日期函數
1.查詢某周的第一天
select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') last_day
from (select substr('2004-32', 1, 4) yy, to_number(substr('2004-32', 6)) ww
from dual)
select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d')-6 first_day from dual
select min(v_date) from
(select (to_date('200201','yyyymm') + rownum) v_date
from all_tables
where rownum < 370)
where to_char(v_date,'yyyy-iw') = '2002-49'
2.查詢某周的最後一天
select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') - 6 first_day
from (select substr('2004-33', 1, 4) yy, to_number(substr('2004-33', 6)) ww
from dual)
select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d') last_day from dual
select max(v_date) from
(select (to_date('200408','yyyymm') + rownum) v_date
from all_tables
where rownum < 370)
where to_char(v_date,'yyyy-iw') = '2004-33'
3.查詢某周的日期
select min_date, to_char(min_date,'day') day from
(select to_date(substr('2004-33',1,4)||'001'+rownum-1,'yyyyddd') min_date
from all_tables
where rownum <= decode(mod(to_number(substr('2004-33',1,4)),4),0,366,365)
union
select to_date(substr('2004-33',1,4)-1||
decode(mod(to_number(substr('2004-33',1,4))-1,4),0,359,358)+rownum,'yyyyddd') min_date
from all_tables
where rownum <= 7
union
select to_date(substr('2004-33',1,4)+1||'001'+rownum-1,'yyyyddd') min_date
from all_tables
where rownum <= 7
)
where to_char(min_date,'yyyy-iw') ='2004-33'
oracle中時間運算
論壇中常常看到有對oracle中時間運算提問的問題,今天有時間,看了看以前各位兄弟的貼子,整理了一下,並作了個示例,希望會對大家有幫助。
首先感謝ern、eric.li及各版主還有熱心的兄弟們
內容如下:
1、oracle支持對日期進行運算
2、日期運算時是以天為單位進行的
3、當需要以分秒等更小的單位算值時,按時間進制進行轉換即可
4、進行時間進制轉換時注意加括號(見示例中紅色括號),否則會出問題
SQL> alter session set nls_date_format='yyyy-mm-dd hh:mi:ss';
會話已更改。
SQL> set serverout on
SQL> declare
2 DateValue date;
3 begin
4 select sysdate into DateValue from dual;
5 dbms_output.put_line('源時間:'||to_char(DateValue));
6 dbms_output.put_line('源時間減1天:'||to_char(DateValue-1));
7 dbms_output.put_line('源時間減1天1小時:'||to_char(DateValue-1-1/24));
8 dbms_output.put_line('源時間減1天1小時1分:'||to_char(DateValue-1-1/24-1/(24*60)));
9 dbms_output.put_line('源時間減1天1小時1分1秒:'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*6
0)));
10 end;
11 /
源時間:2003-12-29 11:53:41
源時間減1天:2003-12-28 11:53:41
源時間減1天1小時:2003-12-28 10:53:41
源時間減1天1小時1分:2003-12-28 10:52:41
源時間減1天1小時1分1秒:2003-12-28 10:52:40
PL/SQL 過程已成功完成。
在oracle中處理日期大全
TO_DATE格式
Day
- dd number 12
- dy abbreviated fri
- day spelled out friday
- ddspth spelled out, ordinal twelfth
- mm number 03
- mon abbreviated mar
- month spelled out march
- yy two digits 98
- yyyy four digits 1998
24小時格式下時間範圍為: 0:00:00 - 23:59:59....
12小時格式下時間範圍為: 1:00:00 - 12:59:59 ....
1.
日期和字符轉換函數用法(to_date,to_char)
2.
select to_char( to_date(222,'J'),'Jsp') from dual
顯示Two Hundred Twenty-Two
3.
求某天是星期幾
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
星期一
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
monday
設置日期語言
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
也可以這樣
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
4.
兩個日期間的天數
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5. 時間為null的用法
select id, active_date from table1
UNION
select 1, TO_DATE(null) from dual;
注意要用TO_DATE(null)
6.
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那麼12月31號中午12點之後和12月1號的12點之前是不包含在這個範圍之內的。
所以,當時間需要精確的時候,覺得to_char還是必要的
7. 日期格式衝突問題
輸入的格式要看你安裝的ORACLE字符集的類型, 比如: US7ASCII, date格式的類型就是: '01-Jan-01'
alter system set NLS_DATE_LANGUAGE = American
alter session set NLS_DATE_LANGUAGE = American
或者在to_date中寫
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
注意我這只是舉了NLS_DATE_LANGUAGE,當然還有很多,
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS
8.
select count(*)
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
)
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
not
in ( '1', '7' )
查找2002-02-28至2002-02-01間除星期一和七的天數
在前後分別調用DBMS_UTILITY.GET_TIME, 讓後將結果相減(得到的是1/100秒, 而不是毫秒).
9.
select months_between(to_date('01-31-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1
select months_between(to_date('02-01-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1.03225806451613
10. Next_day的用法
Next_day(date, day)
Monday-Sunday, for format code DAY
Mon-Sun, for format code DY
1-7, for format code D
11
select to_char(sysdate,'hh:mi:ss') TIME from all_objects
注意:第一條記錄的TIME 與最後一行是一樣的
可以建立一個函數來處理這個問題
create or replace function sys_date return date is
begin
return sysdate;
end;
select to_char(sys_date,'hh:mi:ss') from all_objects;
12.
獲得小時數
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
SQL> select sysdate ,to_char(sysdate,'hh') from dual;
SYSDATE TO_CHAR(SYSDATE,'HH')
-------------------- ---------------------
2003-10-13 19:35:21 07
SQL> select sysdate ,to_char(sysdate,'hh24') from dual;
SYSDATE TO_CHAR(SYSDATE,'HH24')
-------------------- -----------------------
2003-10-13 19:35:21 19
獲取年月日與此類似
13.
年月日的處理
select older_date,
newer_date,
years,
months,
abs(
trunc(
newer_date-
add_months( older_date,years*12+months )
)
) days
from ( select
trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )),
12 ) MONTHS,
newer_date,
older_date
from ( select hiredate older_date,
add_months(hiredate,rownum)+rownum newer_date
from emp )
)
14.
處理月份天數不定的辦法
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual
16.
找出今年的天數
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
閏年的處理方法
to_char( last_day( to_date('02' || :year,'mmyyyy') ), 'dd' )
如果是28就不是閏年
17.
yyyy與rrrr的區別
'YYYY99 TO_C
------- ----
yyyy 99 0099
rrrr 99 1999
yyyy 01 0001
rrrr 01 2001
18.不同時區的處理
select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
from dual;
19.
5秒鐘一個間隔
Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')
from dual
2002-11-1 9:55:00 35786
SSSSS表示5位秒數
20.
一年的第幾天
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
310 2002-11-6 10:03:51
21.計算小時,分,秒,毫秒
select
Days,
A,
TRUNC(A*24) Hours,
TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
from
(
select
trunc(sysdate) Days,
sysdate - trunc(sysdate) A
from dual
)
select * from tabname
order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');
//
floor((date2-date1) /365) 作為年
floor((date2-date1, 365) /30) 作為月
mod(mod(date2-date1, 365), 30)作為日.
23.next_day函數
next_day(sysdate,6)是從當前開始下一個星期五。後面的數字是從星期日開始算起。
1 2 3 4 5 6 7
日 一 二 三 四 五 六
oracle中有很多關於日期的函數
在oracle中有很多關於日期的函數,如:
1、add_months()用於從一個日期值增加或減少一些月份
date_value:=add_months(date_value,number_of_months)
例:
SQL> select add_months(sysdate,12) "Next Year" from dual;
Next Year
----------
13-11月-04
SQL> select add_months(sysdate,112) "Last Year" from dual;
Last Year
----------
13-3月 -13
SQL>
2、current_date()返回當前會放時區中的當前日期
date_value:=current_date
SQL> column sessiontimezone for a15
SQL> select sessiontimezone,current_date from dual;
SESSIONTIMEZONE CURRENT_DA
--------------- ----------
+08:00 13-11月-03
SQL> alter session set time_zone='-11:00'
2 /
會話已更改。
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11月-03 04.59.13.668000 下午 -11:
00
SQL>
3、current_timestamp()以timestamp with time zone數據類型返回當前會放時區中的當前日期
timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
SQL> column sessiontimezone for a15
SQL> column current_timestamp format a36
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
+08:00 13-11月-03 11.56.28.160000 上午 +08:
00
SQL> alter session set time_zone='-11:00'
2 /
會話已更改。
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11月-03 04.58.00.243000 下午 -11:
00
SQL>
4、dbtimezone()返回時區
varchar_value:=dbtimezone
SQL> select dbtimezone from dual;
DBTIME
------
-07:00
SQL>
5、extract()找出日期或間隔值的字段值
date_value:=extract(date_field from [datetime_value|interval_value])
SQL> select extract(month from sysdate) "This Month" from dual;
This Month
----------
11
SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;
3 Years Out
-----------
2006
SQL>
6、last_day()返回包含了日期參數的月份的最後一天的日期
date_value:=last_day(date_value)
SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;
Leap Yr?
----------
29-2月 -00
SQL> select last_day(sysdate) "Last day of this month" from dual;
Last day o
----------
30-11月-03
SQL>
7、localtimestamp()返回會話中的日期和時間
timestamp_value:=localtimestamp
SQL> column localtimestamp format a28
SQL> select localtimestamp from dual;
LOCALTIMESTAMP
----------------------------
13-11月-03 12.09.15.433000
下午
SQL> select localtimestamp,current_timestamp from dual;
LOCALTIMESTAMP CURRENT_TIMESTAMP
---------------------------- ------------------------------------
13-11月-03 12.09.31.006000 13-11月-03 12.09.31.006000 下午 +08:
下午 00
SQL> alter session set time_zone='-11:00';
會話已更改。
SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual;
LOCALTIMESTAMP SYSDATE
---------------------------- ------------------------
12-11月-03 05.11.31.259000 13-11-2003 12:11:31 下午
下午
SQL>
8、months_between()判斷兩個日期之間的月份數量
number_value:=months_between(date_value,date_value)
SQL> select months_between(sysdate,date'1971-05-18') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18')
----------------------------------------
389.855143
SQL> select months_between(sysdate,date'2001-01-01') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')
----------------------------------------
34.4035409
SQL>
9、next_day()給定一個日期值,返回由第二個參數指出的日子第一次出現在的日期值(應返回相應日子的名稱字符串)
與周相關日期函數
1.查詢某周的第一天
select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') last_day
from (select substr('2004-32', 1, 4) yy, to_number(substr('2004-32', 6)) ww
from dual)
select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d')-6 first_day from dual
select min(v_date) from
(select (to_date('200201','yyyymm') + rownum) v_date
from all_tables
where rownum < 370)
where to_char(v_date,'yyyy-iw') = '2002-49'
2.查詢某周的最後一天
select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') - 6 first_day
from (select substr('2004-33', 1, 4) yy, to_number(substr('2004-33', 6)) ww
from dual)
select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d') last_day from dual
select max(v_date) from
(select (to_date('200408','yyyymm') + rownum) v_date
from all_tables
where rownum < 370)
where to_char(v_date,'yyyy-iw') = '2004-33'
3.查詢某周的日期
select min_date, to_char(min_date,'day') day from
(select to_date(substr('2004-33',1,4)||'001'+rownum-1,'yyyyddd') min_date
from all_tables
where rownum <= decode(mod(to_number(substr('2004-33',1,4)),4),0,366,365)
union
select to_date(substr('2004-33',1,4)-1||
decode(mod(to_number(substr('2004-33',1,4))-1,4),0,359,358)+rownum,'yyyyddd') min_date
from all_tables
where rownum <= 7
union
select to_date(substr('2004-33',1,4)+1||'001'+rownum-1,'yyyyddd') min_date
from all_tables
where rownum <= 7
)
where to_char(min_date,'yyyy-iw') ='2004-33'
oracle中時間運算
論壇中常常看到有對oracle中時間運算提問的問題,今天有時間,看了看以前各位兄弟的貼子,整理了一下,並作了個示例,希望會對大家有幫助。
首先感謝ern、eric.li及各版主還有熱心的兄弟們
內容如下:
1、oracle支持對日期進行運算
2、日期運算時是以天為單位進行的
3、當需要以分秒等更小的單位算值時,按時間進制進行轉換即可
4、進行時間進制轉換時注意加括號(見示例中紅色括號),否則會出問題
SQL> alter session set nls_date_format='yyyy-mm-dd hh:mi:ss';
會話已更改。
SQL> set serverout on
SQL> declare
2 DateValue date;
3 begin
4 select sysdate into DateValue from dual;
5 dbms_output.put_line('源時間:'||to_char(DateValue));
6 dbms_output.put_line('源時間減1天:'||to_char(DateValue-1));
7 dbms_output.put_line('源時間減1天1小時:'||to_char(DateValue-1-1/24));
8 dbms_output.put_line('源時間減1天1小時1分:'||to_char(DateValue-1-1/24-1/(24*60)));
9 dbms_output.put_line('源時間減1天1小時1分1秒:'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*6
0)));
10 end;
11 /
源時間:2003-12-29 11:53:41
源時間減1天:2003-12-28 11:53:41
源時間減1天1小時:2003-12-28 10:53:41
源時間減1天1小時1分:2003-12-28 10:52:41
源時間減1天1小時1分1秒:2003-12-28 10:52:40
PL/SQL 過程已成功完成。
http://ss64.com/ora/syntax-to_date.html
TO_DATE
Convert an expression to a date value.Syntax to_date(char[,'format'[,nls_lang]) Key char String expression that will be converted to a date format Date format to use. nls_lang The international language to use.to_date will convert either a character string or an expression into a date value.
The 'format' must be a valid DATE format: YYYY=year, MM=month, DD=Day, HH=Hour, Mi=Minute
If no format is specified Oracle will assume the default date format has been supplied in char.
Examples
to_date('29-Oct-09', 'DD-Mon-YY') to_date('10/29/09', 'MM/DD/YY') to_date('120109', 'MMDDYY') to_date('29-Oct-09', 'DD-Mon-YY HH:MI:SS') to_date('Oct/29/09', 'Mon/DD/YY HH:MI:SS') to_date('October.29.2009', 'Month.DD.YYYY HH:MI:SS') SQL> select * from sales where order_date > to_date('29-Oct-09', 'DD-Mon-YY');
Class.forName()
在一些應用中,無法事先知道使用者將載入什麼類別(例如載入JDBC驅動程式),而必須讓使用者指定類別名稱以載入類別。你可以使用Class的靜態forName()方法實現動態加載類別,以下是個簡單示範,可以指定類別名稱來獲得類別的相關資訊:
try {
Class c = Class.forName(args[0]);
System.out.println("類別名稱:" + c.getName());
System.out.println("是否為介面:" + c.isInterface());
System.out.println("是否為基本型態:" + c.isPrimitive());
System.out.println("是否為陣列:" + c.isArray());
System.out.println("父類別:" + c.getSuperclass().getName());
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("沒有指定類別名稱");
}
catch(ClassNotFoundException e) {
System.out.println("找不到指定的類別");
}
http://caterpillar.onlyfun.net/Gossip/JavaEssence/ClassForName.html
try {
Class c = Class.forName(args[0]);
System.out.println("類別名稱:" + c.getName());
System.out.println("是否為介面:" + c.isInterface());
System.out.println("是否為基本型態:" + c.isPrimitive());
System.out.println("是否為陣列:" + c.isArray());
System.out.println("父類別:" + c.getSuperclass().getName());
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("沒有指定類別名稱");
}
catch(ClassNotFoundException e) {
System.out.println("找不到指定的類別");
}
http://caterpillar.onlyfun.net/Gossip/JavaEssence/ClassForName.html
Ajax.Request
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>02-1.htm</title>
<script src="prototype.js"></script>
<script type = "text/javascript">
function readFile(path) {
var parm = Form.serialize("aForm");
var myAjax = new Ajax.Request(
path,
{
method: 'GET',
parameters: parm,
onComplete: returnValue
}
);
}
function returnValue(xmlhttp) {
rtnMsg="計算後的結果是:"+xmlhttp.responseText;
var div1 = document.getElementById("result");
div1.innerHTML = rtnMsg;
}
</script>
</head>
<body>
<form name="aForm">
<input type="text" name="aValue">
<select name="elements">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" name="bValue">
<input type="Button" value="確定" onClick="readFile('calculate.jsp')"><br>
<div id="result"></div>
</form>
</body>
</html>
url:用來表示請求的資源,如JSP/PHP/ASP…等文件,或可能是個檔案,如文字檔或XML文件檔
method:GET或POST
parameters:用來表示接在請求資源後面的字串,如aValue=2&bValue=2,可以省去這些資源字串的串接,但是有一個限制條件,就是傳輸方式要指定為POST
onComplete:當伺服器處理完前端送出的請求時,即將觸發的事件,我們可以在這裡指定伺服器完成請求時,接著要呼叫指定的函數名稱
有十個以上的欄位時,該怎麼辦?
就用var parm = Form.serialize("aForm") 這一行程式就可以解決掉一切了
不用再使用
path = path + "?aValue="+$F("aValue");來處理
path = path + "&bValue="+$F("bValue");
path = path + "&elements="+$F("elements");
編碼問題
http://caterpillar.onlyfun.net/Gossip/JavaScript/ScriptTag.html
如果你的.js是Big5編碼,而網頁是UTF-8顯示,則可以在<script>上使用charset指定.js的編碼為Big5:
如果你的.js是Big5編碼,而網頁是UTF-8顯示,則可以在<script>上使用charset指定.js的編碼為Big5:
<script type="text/javascript" charset="Big5" src="js/ScriptTag-6.js"></script>
訂閱:
文章 (Atom)