Date時間タイプをmysqlデータベースに保存してから取り出す

1745 ワード

質問:javaのDateタイプがデータベースdatetimeタイプに格納されているときに不一致が発生しました
解決策:データベースへの格納時に時間タイプを文字列への変換格納取り出し時にDateタイプへの変換
コード実装
public class TimeTest {

	public static void main(String[] args) throws ParseException{
		
		//      
		getNowTime();
		
		getDBTime();
		
		
	}
	
	
	//      
	public static void getNowTime(){
		
		//      
		Date date = new Date();
		
		//           datatime      yyyy-MM-dd hh:mm:ss
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		
		//                  
		String str = df.format(date);
		
		System.out.println("         "+str);
		
		saveTime(str);
		
	}
	
	
	//           
	public static void saveTime(String date){
		
		//               
		String sql_insert = "insert into timeTest values(0,'"+date+"')";
		
		//       
		DataCenter.executeChange(sql_insert);
	}
	
	
	//         
	public static void getDBTime() throws ParseException{
		
		String sql_check = "select time from timeTest where num = 6";
		
		//       
		ResultSet rs = DataCenter.executeInquery(sql_check);
		
		try {
			while(rs.next()){
				String str = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(rs.getTimestamp("time"));
				System.out.println("           "+str);
				
				System.out.println("=====================");
				
				//        Date  
				SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
				
				Date date = sd.parse(str);
				
				System.out.println("          "+date);
				
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

実行結果:
取得した現在時刻は、2019-08-06 05:50:56
データベースから取得した時間は、2019-08-06 03:02:58です.
変換後に取得した時間はTue Aug 06 03:02:58 CST 2019