programing

java.util 변환 방법날짜: java.sql.Date?

javaba 2022. 8. 7. 17:53
반응형

java.util 변환 방법날짜: java.sql.Date?

를 입력으로 사용하여 쿼리를 작성하려고 합니다.그래서 이 필요합니다.

나는 그것이 암묵적으로든 명시적으로든 변환을 할 수 없다는 것을 알고 놀랐지만, 자바 API는 아직 나에게 꽤 생소하기 때문에 이것을 어떻게 해야 할지조차 모르겠다.

됐어...

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 입니다.

dr;dr

java.util 변환 방법날짜: java.sql.Date?

하지 마.

다.Date클래스는 구식입니다.Sun, OracleJCP 커뮤니티는 수년 전 java.time 클래스를 정의하는 JSR 310의 만장일치로 이러한 레거시 날짜 시간 클래스를 포기했습니다.

  • 레거시 대신 java.time 클래스 사용java.util.Date&java.sql.DateJDBC 4.2에 있습니다.
  • 코드와의 상호 운용이 아직 java.time으로 갱신되지 않은 경우 java.time으로 변환합니다.
레거시 현대의 변환
java.util.Date java.time.Instant java.util.Date.toInstant()
java.util.Date.from( Instant )
java.sql.Date java.time.Date java.sql.Date.toLocalDate()
java.sql.Date.valueOf( LocalDate )

에서의 쿼리 예시.

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.
)

교환:

  • Instant 대신java.util.Date
    둘 다 UTC 단위이지만 지금은 밀리초가 아닌 나노초로 표시됩니다.
  • LocalDate 대신java.sql.Date
    둘 다 시간대와 시간대가 없는 날짜 전용 값을 나타냅니다.

세부 사항

날짜 전용 값(시간대, 시간대 없음)으로 작업하는 경우 가 아닌 클래스를 사용합니다.

Java(레거시 및 현대) 및 SQL 표준 날짜 유형 표.

java.time

Java 8 이후에서는 Java의 초기 버전에 번들된 성가신 오래된 날짜 클래스가 새로운 java.time 패키지로 대체되었습니다.Oracle 자습서를 참조하십시오.기능의 대부분은 ThreeTen-Backport의 Java 6 & 7로 백포트되었으며 ThreeTenABP의 Android에 더욱 적응되었습니다.

SQL 데이터 유형 DATE는 날짜만을 대상으로 하며 시간대 및 시간대를 지정하지 않습니다.Java는 Java 8이 될 때까지 이러한 클래스가 정확하게 존재한 적이 없습니다.특정 시간대에 따라 오늘 날짜를 구함으로써 이러한 값을 생성해 봅시다(예를 들어 파리에서는 몽트렐보다 새로운 날이 일찍 밝기 때문에 시간대는 날짜를 결정하는 데 중요합니다).

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 드라이버JDBC 4.2 사양에 준거하고 있는 경우,LocalDate를 경유하여 SQL DATE 필드에 저장합니다.

myPreparedStatement.setObject( 1 , localDate );

마찬가지로 SQL DATE 열에서 Java로 가져오기 위해 사용합니다.LocalDate물건.두 번째 인수에 클래스를 지정하면 코드 타입이 안전해집니다.

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

, JDBC 4.2 이후에서는 이 질문 전체가 무관합니다.

JDBC 드라이버가 이 방법으로 동작하지 않는 경우는 java.sql 타입으로 변환할 필요가 있습니다.

java.sql로 변환합니다.날짜.

변환하려면 이전 날짜 클래스에 추가된 새 메서드를 사용합니다.콜을 통해 A/S/S로 변환할 수 있습니다.LocalDate.

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

그리고 반대 방향으로.

LocalDate localDate = sqlDate.toLocalDate();

환원에서 java.util.Date

이전 날짜 클래스 사용은 피해야 하지만 기존 코드를 사용할 경우 강제로 사용해야 할 수 있습니다.이 경우 java.time으로 변환할 수 있습니다.

를 the Instant 순간을 UTC.class : UTC로 .Instantjava.util.Date, 단, 단, 해 주세요Instant최대 나노초의 분해능을 가지고 있습니다.java.util.Date의 해상도는 밀리초밖에 되지 않습니다.

변환하려면 이전 클래스에 추가된 새 메서드를 사용합니다.예를 들어, 및.

Instant instant = myUtilDate.toInstant();

날짜를 결정하려면 표준 시간대의 컨텍스트가 필요합니다.어느 순간이라도, 날짜는 시간대별로 전 세계적으로 다릅니다.를 적용하여를 취득합니다.

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

java.sql.날짜 클래스는 시간 없이 날짜로만 가장하지만 실제로는 자정 시간으로 조정된 시간대를 수행합니다.헷갈려요?네, 예전 날짜 수업은 엉망이에요.


java.time 정보

java.time 프레임워크는 Java 8 이후에 포함되어 있습니다.이러한 클래스는 , 및 등 문제가 많은 오래된 레거시 날짜 시간 클래스를 대체합니다.

자세한 내용은 Oracle 자습서를 참조하십시오.또한 Stack Overflow를 검색하여 많은 예와 설명을 확인하십시오.사양은 JSR 310입니다.

현재 유지보수 모드에 있는 조다 타임 프로젝트는 java.time 클래스로의 이행을 권장합니다.

java.time 객체를 데이터베이스와 직접 교환할 수 있습니다.JDBC 4.2 이후준거한JDBC 드라이버를 사용합니다.스트링도 필요 없고java.sql.*반.휴지 상태 5 및 JPA 2.2는 java.time을 지원합니다.

java.time 클래스는 어디서 얻을 수 있습니까?

Java 또는 Android 버전에 사용할 java.time 라이브러리의 표

쓰리텐 엑스트라 프로젝트는 java.time을 추가 클래스로 확장합니다.이 프로젝트는 향후 java.time에 추가될 수 있는 가능성을 입증하는 기반입니다.여기에는 , , , 유용한 클래스가 있습니다.

다른 답변은 시간정보에 문제가 있을 수 있습니다(예상치 않은 결과와 날짜 비교).

제안:

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);

이 함수는 Java 날짜 개체에서 변환된 SQL 날짜를 반환합니다.

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

java.util.Date로로 합니다.java.sql.Date간, ,, 가, 가, 가, 가, 가, 가, 가, 가, 실다,때문에 도 꼭 사용하시길 .java.sql.Timestamp음음음같 뭇매하다

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

자세한 내용은 이 질문을 참조하십시오.

JXDatePicker(Java 캘린더)에서 날짜를 선택하여 SQL Date 타입으로 데이터베이스에 저장하면 아래가 좋습니다.

java.sql.Date date = new java.sql.Date(pickedDate.getDate().getTime());

여기서 pickedDate는 JXDatePicker의 객체입니다.

이 함수는 Java 날짜 개체에서 변환된 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;
    }

java.util 형식을 지정합니다.데이트 먼저.그런 다음 형식화된 날짜를 사용하여 java.sql의 날짜를 가져옵니다.날짜.

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);

여기 Util Date를 SQL Date로 변환하는 예를 나타냅니다.이것은 제 프로젝트에서 사용하고 있는 것 중 하나입니다.

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)

나는 초보이다: 이 일을 많이 한 후에 해결되었다.생각이 도움이 될 수도 있다

     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

두 날짜를 비교하는 방법(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;
}

이것으로 시험해 보다

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;
}

가장 좋은 변환 방법은 다음과 같습니다.

static java.sql.Timestamp SQLDateTime(Long utilDate) {
    return new java.sql.Timestamp(utilDate);
}

Date date = new Date();
java.sql.Timestamp dt = SQLDateTime(date.getTime());

「 」를 삽입하는 dt을 사용하다

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

아래 코드를 사용하고 있으니 시험해 보세요.

DateFormat fm= new SimpleDateFormatter();

예: 날짜 을 지정합니다)."DD-MM_YYYY" ★★★★★★★★★★★★★★★★★」'YYYY-mm-dd' Date type as as as aba를 합니다.

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

그러면 날짜가 해석됩니다.

이 방법을 사용하여 util 날짜를 sql 날짜로 변환할 수 있습니다.

DateUtilities.convertUtilDateToSql(java.util.Date)

나는 다음과 같은 코딩을 시도하고 있었는데 잘 작동했다.

.sva.svaaces.sva.sv.aces.Date utilDate = new java.displays. ;;();
sql.sql 입니다.Date sqlDate = new java.sql. Date 날짜(util Date);

usgin Mysql의 경우 날짜 열은 이 날짜의 문자열 표현을 전달할 수 있습니다.

따라서 DateFormatter 클래스를 사용하여 포맷한 후 sql 문 또는 준비된 문에서 문자열로 설정합니다.

코드 일러스트는 다음과 같습니다.

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

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

//이 날짜를 sql문으로 전달합니다.

언급URL : https://stackoverflow.com/questions/530012/how-to-convert-java-util-date-to-java-sql-date

반응형