2012-03-13 4 views
2

맞춤 온라인 사용자 인터페이스를 만들고 있습니다. JSP 페이지는 사용자가 자바 스크립트로 만든 캘린더에서 날짜를 선택하고 이벤트가 발생할 정확한 시간을 지정할 수있는 양식이 있습니다.
날짜 : 2012-MAR-12
시간 : 오후 7시자바 - 날짜를 통해 제출 된 날짜를 MySQL 데이터베이스에 저장된 날짜와 비교하십시오. 어떻게?

내 서블릿이처럼 보이는 끝날 것이다, 양식 데이터를 읽고

날짜와 시간을 mysql 데이터베이스 테이블에 저장해야합니다. 열을 DATETIME 유형으로 설정했습니다.

해당 열의 날짜 값을 '현재 날짜 + 30 분'과 비교하고 해당 기준을 충족하는 이벤트 만 표시하려고합니다.

1) 양식에서 보낸 날짜와 시간의 문자열 값을 DATETIME 값으로 변환하여 데이터베이스에 저장하려면 어떻게해야합니까?

2) db의 날짜/시간 항목을 현재 날짜 및 시간과 어떻게 비교합니까?

답변

2

문자열을 날짜로 변환하려면 SimpleDateFormat 클래스를 사용할 수 있습니다. 여기에는 문자열을 다양한 형식의 날짜로 변환하는 메소드가 내장되어 있습니다. 예를 들어

:

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MMM-dd"); 
    Date mydate = fmt.parse("2012-Mar-04", 0); 

이제 MySQL은 날짜에 비교 MyDate가 사용할 수 있습니다.

두 번째 질문에 대해서는 새로운 날짜를 인스턴스화하여 현재 시스템 시간을 얻을 수 있습니다.

Date now = new Date(); 

그런 다음이를 사용하여 MySQL 테이블의 날짜를 간단한 SQL 문과 비교하십시오. 나는 당신이 Prepared 문을 사용하고 있다고 가정합니다. 사기꾼 등등 연결하고

PreparedStatement currentEvents = con.prepareStatement("Select * from mytable where thedate = ?"); 
    currentEvents.setDate(1, mydate); 
    result = currentEvents.executeQuery(); 

...

+0

SimpleDateFormat 예제 코드의 첫 번째 블록이 작동하지 않습니다. 비교하기 위해 데이터베이스 항목에 현재 날짜에 30 분 정도를 더할 수 있습니까? 시간을 비교할 수 있어야하고 날짜뿐 아니라 가능할 수 있어야합니까? – katura

+0

물론. 여러 가지 방법으로 날짜와 시간을 지정하기 위해 만들 수있는 패턴을 보려면 연결된 SimpleDateFormat 문서를보십시오. 당신이 가장 잘 어울리는 방법을 선택하십시오. 많은 날짜 조작을해야한다면 java.util.Calendar 또는 joda time (http://joda-time.sourceforge.net/)으로 전환하십시오. –

+0

나는 Java가 날짜라는 클래스에 날짜와 시간을 모두 저장한다는 것이 약간 혼란 스럽다는 것에 동의한다. 그래도 익숙해 질 수 있습니다. –

0

이 코드를 사용하여 입력을 구문 분석하려면 : 당신은 당신의 날짜가되면

String dateInput = "2012-MAR-12"; 
String timeInput = "7:00 p.m."; 

SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-ddh:mm a"); 
String s = dateInput + timeInput.replace(".", ""); // must remove the dots 
Date d = f.parse(s); 

, 당신은을 통해 직접 사용할 수 있습니다 JDBC. 귀하의 쿼리에서 모든 날짜 비교를 할 것입니다. 나는 당신이 뭘 하려는지 이해하지만 이런 식으로 뭔가를하려고하지 않습니다

select * from table where datetime_col between ? and adddate(?, interval 30 minutes) 

이 JDBC 호출에 매개 변수로 두 배의 데이터 객체를 전달합니다.

관련 문제