Java中日期类型和mysql中日期类型进行整合

1. java与mysql中日期、时间类型总结:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

mysql(版本:5.1.50)的时间日期类型如下:

datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:009999-12-31 23:59:59

timestamp 4bytes xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:012038

date 3bytes xxxx-xx-xx 1000-01-019999-12-31

year 1bytes xxxx 19012155

time 3bytes xx:xx:xx -838:59:59838:59:59(为了满足时间的加减运算)

------------------------------------------------------------------------

java(1.6) 中能保存时间日期类型的类主要有

java.util.Date

java.util.Calendar

java.sql.Date

java.sql.Time

java.sql.Timestamp

2. java提供与mysql方便交互的三种数据类型

java.sql.Date
java.sql.Time
java.sql.Timestamp

它们都是继承java.util.Date,算是对该类的精简,很适合跟数据库交互。

对于java.util.Date,以前从mysql中查询出来的时间日期类型,都放在java.util.Date类型里面了。这样带来一系列的问题,首先这个类提供的时间操作函数太少,一般都需要转换成java.util.Calendar再去操作。

对于java.util.Calendar,calendar具有强大的跳跃运算和间隔运算能力,在需要的时候,可以将sql系列的时间转成calendar。
先设置calendar为历元,然后从sql系列时间中转换,最后再转回sql系列时间。

3. 实验:java >> mysql


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

===========java注入数据库==========

java类型   mysql类型        成功与否

date         date               yes

date         time               no

date         timestamp       no

date         datetime         no

time         date               no

time         time               yes

time         timestamp       no

time         datetime         no

timestamp date              yes

timestamp time              yes

timestamp timestamp     yes

timestamp datetime        yes

==========end java注入数据库========

总规律,如果A完全包含B,则A可以向B注入数据,否则报错

4.实验:mysql >> java


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

==========从数据库提取到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=======

不会出错,缺少的部分使用历元,而不是当前日期时间

5. 当数据库中的日期值是null时,读取出来进行java对象实例化时:


1

2

3

4

5

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

时间: 2024-12-12 17:33:57

Java中日期类型和mysql中日期类型进行整合的相关文章

Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)

Sql Server中的数据类型和Mysql中的数据类型的对应关系(转):https://blog.csdn.net/lilong329329/article/details/78899477 一.SQL SERVER与MySQL数据存储的差异 1.SQL SERVER中的datetime,保留到微秒(秒后小数点3位),而mysql仅保留到秒,转换后是否会影响业务,如果影响,需要新增一个字段专门来存储微秒或者毫秒,虽然mysql中没有时间数据类型的精度到达微秒或者毫秒,但是mysql提供对微秒的

Java数据类型和MySql数据类型对应表(转)

Java数据类型和MySql数据类型对应表 java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N CHAR java.lang.String 1   BLOB L+N BLOB java.lang.byte[] -4   TEXT 65535 VARCHAR java.lang.String -1        

Java数据类型和MySql数据类型对应表

Java数据类型和MySql数据类型对应表: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535 VARCHAR java.lang.String -1 INTEGER 4 INTEGER UNSIGNED java.lang.Long 4 TI

Java数据类型和MySql数据类型对应一览

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N CHAR java.lang.String 1   BLOB L+N BLOB java.lang.byte[] -4   TEXT 65535 VARCHAR java.lang.String -1               INTEGER 4 INTEGER UNSIGNED java.la

时间类和日期类派生出时间日期类

今天再写一个多重继承的应用实例,时间类和日期类派生出时间日期类 程序代码 #include <iostream> using namespace std; class Date//日期类 { public: //构造函数 Date(int y = 0, int m = 0, int d = 0); //设置日期 void SetDate(int y,int m,int d); //打印日期 void PrintDate() { cout<<year<<"年&q

字符串转换成java.util.date类型和将java.util.date类型转换成java.sql.date类型

//将字符串转换成java.util.date类型 DateFormat format = new SimpleDateFormat("yyyyMMDD"); Date date1 = format.parse(startDate); //将java.util.date类型转换成java.sql.date类型 skg.statStartTime = new java.sql.Date(date1.getTime()); skg.statEndTime = new java.sql.Da

Java中int类型和tyte[]之间转换及byte[]合并

JAVA基于位移的 int类型和tyte[]之间转换 [java] view plaincopy /** * 基于位移的int转化成byte[] * @param int number * @return byte[] */ public static byte[] intToByte(int number) { byte[] abyte = new byte[4]; // "&" 与(AND),对两个整型操作数中对应位执行布尔代数,两个位都为1时输出1,否则0. abyte[

js中Boolean类型和Number类型的一些常见方法

Boolean类型 Boolean类型重写了valueOf() 方法, 返回基本布尔类型值true或false,重写了toString() 方法,返回基本字符串"true" 和 "false" 创建一个Boolean类型的实例 var booleanObj = new Boolean(true); Boolean类型和Boolean值有三个区别: Boolean类型的实例总是真 var falseObject = new Boolean(false); var re

talend 将hbase中数据导入到mysql中

首先,解决talend连接hbase的问题: 公司使用的机器是HDP2.2的机器,上面配置好Hbase服务,在集群的/etc/hbase/conf/hbase-site.xml下,有如下配置: <property> <name>zookeeper.znode.parent</name> <value>/hbase-unsecure</value> </property> 这个配置是决定, Hbase master在zookeeper中