java.util.Date || java.sql.Date (+to_char() in sql)

탱귤생귤·2023년 4월 18일

SQL

목록 보기
4/13

The reason I can't use pstmt.setDate(2, mdto.getBirth());

	con=getConnection();
				String sql="insert into memberlist(membernum, name, birth, phone, gender,bpoint, age) "
						+ "values(member_seq.nextVal, ?, to_date( ''||?||'', 'YYYY-MM-DD'), ?,?,?,?)";
				
				try {
					pstmt=con.prepareStatement(sql);
					pstmt.setString(1, mdto.getName());
					pstmt.setString(2, mdto.getBirth());
					pstmt.setString(3, mdto.getPhone());
					pstmt.setString(4, mdto.getGender());
					pstmt.setInt(5, mdto.getBpoint());
					pstmt.setInt(6, mdto.getAge());
					
					result=pstmt.executeUpdate();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				
				close();
				
				return result;
			}

I was curious why I have to use pstmt.setString(2, mdto.getBirth()); even though I converted String into Date format by to_date( ''||?||'', 'YYYY-MM-DD').

The reason was when I do to_date( ''||?||'', 'YYYY-MM-DD'), I'm getting java.sql.Date.
But when I do pstmt.setString(2, mdto.getBirth());, mdto.getBirth() is java.util.Date. So I have use setString.

If I want to use setDate() anyway

I will need java.sql.Date, so...

pstmt.setDate(2, new java.sql.Date(mdto.getBirth().getTime()));

About to_char() in sql world

I thought this will change date or time into "only" Character, but in sql world, character/String/text does not matter as much as Java.
Anyway, to_char() converts time and date to text type.

0개의 댓글