java와 mysql 시간 유형 간의 대응

MySQL (버전: 5.1.50)의 시간 및 날짜 유형은 다음과 같습니다.

datetime 8바이트 xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
타임스탬프 4바이트 xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01 ~ 2038
날짜 3bytes xxxx-xx-xx 1000-01-01 ~ 9999-12-31
년 1bytes xxxx 1901 ~ 2155
시간 3bytes xx:xx:xx -838:59:59 ~ 838:59:59 (시간의 덧셈과 뺄셈을 맞추기 위해)

 

 

Java (1.6) 에서 시간 및 날짜 유형을 저장할 수 있는 클래스는 주로 다음과 같습니다.

java.util.날짜

java.util.Calendar

java.sql.날짜

java.sql.시간

java.sql.타임스탬프

 

      이전에 mysql에서 쿼리한 시간 및 날짜 유형은 java.util.Date 유형에 배치됩니다. 이것은 일련의 문제를 가져오는데, 첫째, 이 클래스에서 제공하는 시간 연산 함수가 너무 적고, 일반적으로 동작하기 위해서는 java.util.Calendar 로 변환해야 하고, 둘째, java.util.Calendar 를 사용 하더라도 , 매우 편리하지 않습니다. 간단한 아이디어를 실현하기 위해 많은 코드를 작성해야 합니다. java.util.Date 의 데이터 내용 은 xxxx-xx-xx xx:xx:xx이며 때로는 시간이 필요하지 않습니다. 날짜. 데이터베이스 에서 얻은 날짜 유형을 이 클래스에 넣으면 시간 위치에 현재 시간이 자동으로 추가됩니다. 이렇게 하면 원래는 데이터베이스에서 두 날짜가 같으나 꺼내어 이 클래스에 배치하면 더 이상 같지 않기 때문에 시간 오류를 고려하는 것은 골칫거리입니다.

 

java는 mysql과 쉽게 상호 작용할 수 있도록 세 가지 데이터 유형을 제공합니다.

java.sql.날짜

java.sql.시간

java.sql.타임스탬프

그것들은 모두 클래스의 단순화로 간주될 수 있는 java.util.Date 에서 상속 되며 데이터베이스와 상호 작용하는 데 매우 적합합니다.

 

===========데이터베이스에 자바 주입 ==========

자바 유형 mysql 유형 성공 여부
날짜 날짜 예
날짜 시간 없음
날짜 타임스탬프
날짜 날짜 시간 없음 시간 날짜 없음 시간 시간 예 시간 타임

스탬프 시간 없음 날짜 시간 없음 타임스탬프 날짜 예 타임스탬프 시간 예 타임스탬프 타임스탬프 타임스탬프 날짜시간 예 ======= ===End 








Java 주입 데이터베이스 ========
일반 규칙, A가 B를 완전히 포함하는 경우 A는 B에 데이터를 주입할 수 있습니다. 그렇지 않으면 오류가 보고됩니다.


 

========== 데이터베이스에서 Java로 추출 ==========

mysql类型    java类型     成与否
date             date         yes
date             time         yes --------------缺少的部分使用历元
date           timestamp   yes --------------缺少的部分使用历元  

time           date           yes --------------缺少的部分使用历元
time           time           yes
time          timestamp    yes --------------缺少的部分使用历元

timestamp date           yes
timestamp time           yes
timestamp timestamp   yes

datetime      date         yes
datetime      time         yes
datetime    timestamp   yes
==========end
 从数据库提取到java=======
不会出错,缺少的部分使用历元,而不是当前日期时间

 

 

 

 

 


null to db(null) =====> 也是null  
null to db(not null)=======> 数据库报错
db(null) to java==========> 如果单字段出来,则整个entity都是null,如果带着其他不是null的字段出来,则可以实例化entity,本身字段依然是null
db(not null) to java==========> 如果包含日期,则报错,否则为000
最优解决方案,定义成可以为null

java.sql时间系统的运算系列

after,before
compareTo原小于参数返回<0,等于返回=0,大于返回>0

优点:于数据库同类型,可以方便传输(无论是从DB到src还是反方向),方便比较大小
缺点:缺少运算单元,不适合时间跳跃的运算和间隔的运算

总结:calendar具有强大的跳跃运算和间隔运算能力,在需要的时候,可以将sql系列的时间转成calendar。
先设置calendar为历元,然后从sql系列时间中转换,最后再转回sql系列时间。
calendar只用于时间有跳跃的转换,对比运算统一使用sql系统,这样代码将更清晰

 

 

 

 

날짜 및 달력을 GMT로 초기화하는 방법

new date(0)
calendar.setTimeInMillis(0)


sql series time

static valueOf


new XX(0)
새로운 XX(연도+1900, 월+1,일,시,분,초) ,nano)는 더 이상 사용되지 않으며 생성

toString 또는 SimpleDateFormat



기사 출처: http://blog.csdn.net/weinianjie1/article/details/6310770

추천

출처blog.csdn.net/zs520ct/article/details/78326130