---
# System prepended metadata

title: 10號筆記
tags: [筆記本]

---

# 10號筆記
###### tags: `筆記本`
## Java

### 日期轉換
如果需要將Date資料匯入資料庫(sql)時，我們可以使用setDate()，而要注意的是它所需要的date資料是『**java.sql.Date**』並不是我們以往在編譯Java時所用的『**java.util.Date**』，因此我們必須進行一個轉換的動作。  

在開始示範前我們必須先知道一件事，就是『**java.util.Date**』是『**java.sql.Date**』的父類別，因此兩者皆具有getTime()方法，此方法將是我們進行轉換的關鍵。  

不論是sql或是util這兩種的Date皆具有一項功能就是可以將long型式(毫秒)的資料轉成時間，而為甚麼前面我所提到的getTime()方法會是關鍵?其原因就是getTime()返回的值會以long型式。

```
Date date = new Date();
					
System.out.println(date);   
//結果=Sun Dec 27 00:34:47 GMT+08:00 2020

System.out.println("util.Date getTime() = " + date.getTime());   
//結果=1609000487259
```

所以轉換方法就顯而易見了，發法就是:  
util.Date去裝載Date資料，然後藉由getTime()將裝載的資料轉成long(毫秒)，再將轉換完成的long帶入sql.Date中。  
示範：
```
public static void main(String[] args) {	
    
	SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); 
        //先將日期格式化
	
	try {
		java.util.Date utilDate = format.parse("2020/12/27");
		//.parse()此方法的用途是可以把字串變成Date型式，但卻有可能發生例外，所以需要try/catch承接，或是拋出
			
		System.out.println(utilDate);
		//結果=Sun Dec 27 00:00:00 GMT+08:00 2020，可以確認我們確實將型式轉換成功了
			
		java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
		//利用.getTime()方法將utilDate內的值轉化為long型式，放入sqlDate中
			
		System.out.println(sqlDate);
		//印出結果為=2020-12-27，轉化成功
        
	} catch (ParseException e) {
			e.printStackTrace();
	}
		
}
```
在匯入csv檔置資料庫時，若有日期的欄位則可以用這方式進行轉換動作，便可順利放入資料庫。


---
