복붙노트

[SQL] 어떻게 java.sql.Date에 java.util.Date를 변환하는?

SQL

어떻게 java.sql.Date에 java.util.Date를 변환하는?

내가 입력으로 java.util.Date를 사용하려고하고 그것으로 쿼리를 만드는 오전 - 나는 java.sql.Date이 필요하므로.

나는 그것이 암시 적으로 또는 명시 적으로 변환 할 수 없다는 것을 발견 놀랐습니다 - 그러나 자바 API는 나에게 여전히 비교적 새로운이기 때문에 난, 내가 이런 짓을 했을까 방법을 모르겠어요.

해결법

  1. ==============================

    1.하지 마십시오. 두 클래스는 시대에 뒤 떨어지게된다.

    하지 마십시오. 두 클래스는 시대에 뒤 떨어지게된다.

    PreparedStatement의 예는 쿼리.

    myPreparedStatement.setObject( 
        … ,                                         // Specify the ordinal number of which argument in SQL statement.
        myJavaUtilDate.toInstant()                  // Convert from legacy class `java.util.Date` (a moment in UTC) to a modern `java.time.Instant` (a moment in UTC).
            .atZone( ZoneId.of( "Africa/Tunis" ) )  // Adjust from UTC to a particular time zone, to determine a date. Instantiating a `ZonedDateTime`.
            .toLocalDate()                          // Extract a date-only `java.time.LocalDate` object from the date-time `ZonedDateTime` object.
    )
    

    교체 :

    당신이 날짜 전용 값 (어떤 시간의 일, 아니 시간대)와 함께 작동하도록하려는 경우, 오히려 java.util.Date보다 LOCALDATE 클래스를 사용합니다.

    나중에 자바 8에서, 자바의 초기 버전에 번들로 제공된 귀찮은 된 날짜 - 시간 클래스는 새로운 java.time 패키지로 대체되었다. 오라클 자습서를 참조하십시오. 대부분의 기능은 ThreeTen - 백 포트 자바 6 7 백 포팅 또한 ThreeTenABP 안드로이드에 적응되었다.

    는 SQL 데이터 유형 DATE는 더 시간이 하루의없이 시간대와 날짜 전용하기위한 것입니다. 자바 (시간대 파리의 앞부분에서 새로운 날의 새벽으로 날짜를 결정하는 중요한 특정 시간대에 따라 오늘 날짜를 얻어서 그런 가치를 창출 자바 8.하자에 java.time.LocalDate까지 정확하게 같은 클래스를 † 없었 ) 예 몬트리올보다.

    LocalDate todayLocalDate = LocalDate.now( ZoneId.of( "America/Montreal" ) );  // Use proper "continent/region" time zone names; never use 3-4 letter codes like "EST" or "IST".
    

    이 시점에서, 우리는 수행 할 수 있습니다. JDBC 4.2 스펙과의 JDBC 드라이버 준수, 당신은 SQL 날짜 필드에 저장소에 PreparedStatement로 setObject를 통해 LOCALDATE을 통과 할 수 있어야합니다.

    myPreparedStatement.setObject( 1 , localDate );
    

    마찬가지로, 자바 LOCALDATE 개체에 대한 SQL 날짜 열에서 가져 ResultSet의 ::으로 getObject를 사용합니다. 두 번째 인수에 클래스를 지정하면 코드 형 안전합니다.

    LocalDate localDate = ResultSet.getObject( 1 , LocalDate.class );
    

    즉,이 전체 질문 JDBC 4.2 이상에서 무관하다.

    당신의 JDBC 드라이버가이 방식으로 작동하지 않는 경우, 당신은 java.sql의 유형으로 변환으로 폴백 할 필요가있다.

    변환하려면, 기존의 날짜 - 시간 클래스에 추가 된 새로운 방법을 사용합니다. 우리는 LOCALDATE 변환 java.sql.Date.valueOf (...)를 호출 할 수 있습니다.

    java.sql.Date sqlDate = java.sql.Date.valueOf( todayLocalDate );
    

    그리고 다른 방향으로 가고.

    LocalDate localDate = sqlDate.toLocalDate();
    

    당신이 이전 날짜 - 시간 클래스를 사용하지 말아야하는 동안, 당신은 기존 코드로 작업 할 때 강제로 할 수있다. 그렇다면, 당신은 java.time에서 /로 변환 할 수 있습니다.

    UTC의 타임 라인에 잠시 시간을 나타내는 인스턴트 클래스를 통해 이동합니다. 인스턴트는 java.util.Date에 생각이 비슷합니다. 그러나 java.util.Date는 밀리 초 해상도를 가지고있는 동안 인스턴트은 나노초 해상도를 가지고 참고.

    변환하려면, 기존의 클래스에 추가 된 새 방법을 사용합니다. 예를 들어, java.util.Date.from (인스턴트)와 java.util.Date::toInstant.

    Instant instant = myUtilDate.toInstant();
    

    날짜를 확인하려면, 우리는 시간대의 맥락이 필요합니다. 어떤 주어진 순간, 날짜 시간대에 의해 지구 주위 다릅니다. ZonedDateTime를 얻을 수있는 ZoneId을 적용합니다.

    ZoneId zoneId = ZoneId.of ( "America/Montreal" );
    ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId );
    LocalDate localDate = zdt.toLocalDate();
    

    † java.sql.Date 클래스 척은 날짜 만 시간의 일없이 할 수 있지만, 실제로는 시간의 일, 자정 시간으로 조정을 수행합니다. 혼동? 예, 이전 날짜 - 시간의 수업은 엉망이다.

    java.time 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 java.util.Date, 캘린더, 및 SimpleDateFormat에로 번잡 한 기존 레거시 날짜 - 시간의 수업을 대신하다.

    Joda 타임 프로젝트는 현재 유지 관리 모드에서 java.time 클래스로 마이그레이션을 조언한다.

    더 많은 내용은 오라클 자습서를 참조하십시오. 그리고 많은 예제와 설명은 스택 오버플로를 검색 할 수 있습니다. 사양은 JSR 310입니다.

    당신은 java.time은 데이터베이스와 객체를 직접 교환 할 수 있습니다. 나중에 JDBC 4.2와 JDBC 드라이버 규격을 사용합니다. 문자열에 대한 필요가 없습니다, java.sql의에 대한 필요가 없습니다. * 클래스.

    어디 java.time 클래스를 얻기 위해?

    ThreeTen - 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 java.time에 향후 추가를위한 시험장이다. 당신은 같은 간격, YearWeek, YearQuarter, 더 여기에 몇 가지 유용한 클래스를 찾을 수 있습니다.

  2. ==============================

    2.신경 쓰지 마....

    신경 쓰지 마....

    public class MainClass {
    
      public static void main(String[] args) {
        java.util.Date utilDate = new java.util.Date();
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
        System.out.println("utilDate:" + utilDate);
        System.out.println("sqlDate:" + sqlDate);
    
      }
    
    }
    

    그것을 설명합니다. 링크는 http://www.java2s.com/Tutorial/Java/0040__Data-Type/ConvertfromajavautilDateObjecttoajavasqlDateObject.htm입니다

  3. ==============================

    3.다른 대답하면 시간 정보에 문제가있을 수 (예상치 못한 결과 날짜 비교를!)

    다른 대답하면 시간 정보에 문제가있을 수 (예상치 못한 결과 날짜 비교를!)

    내가 제안 :

    java.util.Calendar cal = Calendar.getInstance();
    java.util.Date utilDate = new java.util.Date(); // your util date
    cal.setTime(utilDate);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);    
    java.sql.Date sqlDate = new java.sql.Date(cal.getTime().getTime()); // your sql date
    System.out.println("utilDate:" + utilDate);
    System.out.println("sqlDate:" + sqlDate);
    
  4. ==============================

    4.이 기능은 자바 날짜 개체에서 변환 된 SQL 날짜를 반환합니다.

    이 기능은 자바 날짜 개체에서 변환 된 SQL 날짜를 반환합니다.

    public java.sql.Date convertJavaDateToSqlDate(java.util.Date date) {
        return new java.sql.Date(date.getTime());
    }
    
  5. ==============================

    5.java.sql.Data에 java.util.Data를 변환하면 시간, 분, 초를 잃어 버리게된다. 가능한 경우 그래서, 난 당신이 이런 식으로의 java.sql.Timestamp을 사용하는 것이 좋습니다 :

    java.sql.Data에 java.util.Data를 변환하면 시간, 분, 초를 잃어 버리게된다. 가능한 경우 그래서, 난 당신이 이런 식으로의 java.sql.Timestamp을 사용하는 것이 좋습니다 :

    prepareStatement.setTimestamp(1, new Timestamp(utilDate.getTime()));
    

    더 많은 정보를 원하시면,이 질문을 확인 할 수 있습니다.

  6. ==============================

    6.JDatePicker (자바 달력)에서 날짜를 따기와는 SQL 날짜 형식으로 데이터베이스에 저장 점점 내 경우에는, 아래의 벌금을 작동합니다 ..

    JDatePicker (자바 달력)에서 날짜를 따기와는 SQL 날짜 형식으로 데이터베이스에 저장 점점 내 경우에는, 아래의 벌금을 작동합니다 ..

    java.sql.Date 날짜가 새로운 java.sql.Date을 = (pickedDate.getDate () 다음 getTime ().);

    여기서 pickedDate는 JXDatePicker의 목적은

  7. ==============================

    7.이 기능은 자바 날짜 개체에서 변환 된 SQL 날짜를 반환합니다.

    이 기능은 자바 날짜 개체에서 변환 된 SQL 날짜를 반환합니다.

    public static java.sql.Date convertFromJAVADateToSQLDate(
                java.util.Date javaDate) {
            java.sql.Date sqlDate = null;
            if (javaDate != null) {
                sqlDate = new Date(javaDate.getTime());
            }
            return sqlDate;
        }
    
  8. ==============================

    8.먼저 java.util.Date를 포맷합니다. 그런 다음 java.sql.Date의 날짜를 얻을 수있는 형식의 날짜를 사용

    먼저 java.util.Date를 포맷합니다. 그런 다음 java.sql.Date의 날짜를 얻을 수있는 형식의 날짜를 사용

    java.util.Date utilDate = "Your date"
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    final String stringDate= dateFormat.format(utilDate);
    final java.sql.Date sqlDate=  java.sql.Date.valueOf(stringDate);
    
  9. ==============================

    9.다음의 SQL 날짜 백분율 날짜 변환의 예와 나중에이 내가 너무 당신에게 도움이 될 수 내 프로젝트에서 사용하고 무엇을 한 예입니다.

    다음의 SQL 날짜 백분율 날짜 변환의 예와 나중에이 내가 너무 당신에게 도움이 될 수 내 프로젝트에서 사용하고 무엇을 한 예입니다.

    java.util.Date utilStartDate = table_Login.getDob();(orwhat ever date your give form obj)
    java.sql.Date sqlStartDate = new java.sql.Date(utilStartDate.getTime());(converting date)
    
  10. ==============================

    10.저는 초보자입니다 :이 주위에 많이 실행 근무 후. 생각 유용 할 수 있습니다

    저는 초보자입니다 :이 주위에 많이 실행 근무 후. 생각 유용 할 수 있습니다

         String bufDt =  bDOB.getText();  //data from form
         DateFormat dF = new SimpleDateFormat("dd-MM-yyyy"); //data in form is in this format
         Date bbdt = (Date)dF.parse(bufDt);  // string data is converted into java util date
         DateFormat dsF = new SimpleDateFormat("yyyy-MM-dd"); //converted date is reformatted for conversion to sql.date
         String ndt = dsF.format(bbdt); // java util date is converted to compatible java sql date
         java.sql.Date sqlDate=  java.sql.Date.valueOf(ndt);  // finally data from the form is convered to java sql. date for placing in database
    
  11. ==============================

    11.

    java.sql.Date sqlDate = new java.sql.Date(javaDate.getTime());
    

    여기 javaDate은 java.util.Date의 인스턴스이다

  12. ==============================

    12.2 날짜를 비교하기위한 방법 (util.date 또는 sql.date)

    2 날짜를 비교하기위한 방법 (util.date 또는 sql.date)

     public static boolean isSameDay(Date a, Date b) {
        Calendar calA = new GregorianCalendar();
        calA.setTime(a);
    
        Calendar calB = new GregorianCalendar();
        calB.setTime(b);
    
        final int yearA = calA.get(Calendar.YEAR);
        final int monthA = calA.get(Calendar.MONTH);
        final int dayA = calA.get(Calendar.DAY_OF_YEAR);
    
        final int yearB = calB.get(Calendar.YEAR);
        final int monthB = calB.get(Calendar.MONTH);
        final int dayB = calB.get(Calendar.DAY_OF_YEAR);
    
        return yearA == yearB && monthA == monthB && dayA == dayB;
    }
    
  13. ==============================

    13.이것으로 시도

    이것으로 시도

    public static String toMysqlDateStr(Date date) {
        String dateForMySql = "";
        if (date == null) {
            dateForMySql = null;
        } else {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            dateForMySql = sdf.format(date);
        }
    
        return dateForMySql;
    }
    
  14. ==============================

    14.나는 변환하는 가장 좋은 방법은 생각 :

    나는 변환하는 가장 좋은 방법은 생각 :

    static java.sql.Timestamp SQLDateTime(Long utilDate) {
        return new java.sql.Timestamp(utilDate);
    }
    
    Date date = new Date();
    java.sql.Timestamp dt = SQLDateTime(date.getTime());
    

    당신은 당신이 할 수있는 SQL 테이블에 DT 변수를 삽입하려면 :

    insert into table (expireAt) values ('"+dt+"');
    
  15. ==============================

    15.나는 그것을 밖으로 시도하십시오 다음 코드를 사용하고

    나는 그것을 밖으로 시도하십시오 다음 코드를 사용하고

    DateFormat fm= new SimpleDateFormatter();
    

    원하는 날짜의 형식을 지정 예를 들어 "DD-MM_YYYY '또는'YYYY-MM-DD '에 대한 다음과 같은 자바 날짜 데이터 유형을 사용

    fm.format("object of java.util.date");
    

    그것은 당신의 날짜를 구문 분석

  16. ==============================

    16.당신은 SQL 날짜 날짜 util을 변환하려면이 방법을 사용할 수 있습니다,

    당신은 SQL 날짜 날짜 util을 변환하려면이 방법을 사용할 수 있습니다,

    DateUtilities.convertUtilDateToSql(java.util.Date)
    
  17. ==============================

    17.나는 다음과 같은 코딩이 일 벌금을 시도하고 있었다.

    나는 다음과 같은 코딩이 일 벌금을 시도하고 있었다.

  18. ==============================

    18.당신이 MySQL을 사용하는 경우 날짜 열이 날짜의 문자열 표현을 전달할 수 있습니다

    당신이 MySQL을 사용하는 경우 날짜 열이 날짜의 문자열 표현을 전달할 수 있습니다

    내가 DateFormatter 클래스를 사용하므로 포맷 한 다음 SQL 문 또는 준비된 문에서 문자열로 설정합니다

    여기에 코드 그림입니다 :

    private String converUtilDateToSqlDate(java.util.Date utilDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String sqlDate = sdf.format(utilDate);
        return sqlDate;
    }
    

    문자열 날짜 = converUtilDateToSqlDate (otherTransaction.getTransDate ());

    // 다음 SQL 문을이 날짜를 통과

  19. from https://stackoverflow.com/questions/530012/how-to-convert-java-util-date-to-java-sql-date by cc-by-sa and MIT license