`
kgdso
  • 浏览: 87866 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Mysql和Java时间类型对照(转)

 
阅读更多

MySqlJava的时间类型对照

MySql的时间类型有          Java中与之对应的时间类型
date                                           java.sql.Date

Datetime                                    java.sql.Timestamp

Timestamp                                  java.sql.Timestamp

Time                                          java.sql.Time

Year                                           java.sql.Date

 

 

对其进行分析
参考MySql reference manual

Date:
A date. The supported range is ’1000-01-01’ to ’9999-12-31’. MySQL displays DATE values in ’YYYY-MM-DD’ format, but allows you to assign values to DATE columns using either strings or numbers. 

只记录日期信息,表示范围为1000-01-01  9999-12-31

MySql 按照YYYY-MM-DD 的方式进行该类字段的显示。添加该类字段数据,即可以使用字符串类型,也可以使用数字类型

 

由于Date类型的字段只记录日期信息,所以如果添加的数据中包含了时间信息,该时间信息将会自动被截断。

如果要保存时间信息,可以考虑使用DateTime类型。

经过测试,发现如下2种方式可以对Date类型字段进行填充:

按字符串:

insert into time_table(CreateDate) values(‘2007-04-09’)

按数字:
insert into time_table(CreateDate) values(20070409)

 

获取可以用java.sql.Date类型获取

代码为:

Date dtDate =rsBuffer.getDate("CreateDate");

 

测试代码如下:(其中,IDBFace 是自己基于JDBC封装的一个简单类接受Sql对数据库进行操作)
public void testDate()throws SQLException

{

       IDBFace DBFace =DBFactory.createMySqlFace();

       DBFace.connect();

       //清空表

       String strDelete ="delete from time_table";

       DBFace.update(strDelete);

       //添加

             

       String strInsert ="insert into time_table(CreateDate) values(20070409)";

       DBFace.update(strInsert);

             

             

       //获取

       String strSelect ="select * from time_table";

       ResultSet rsBuffer =DBFace.select(strSelect);

       while(rsBuffer.next())

       {

              Date dtDate =rsBuffer.getDate("CreateDate");

              System.out.println(dtDate.toString());

       }

       DBFace.close();

}

执行结果: 2007-04-09

 

DateTime
A date and time combination. The supported range is ’1000-01-01 00:00:00’ to ’9999-12-31 23:59:59’. MySQL displays DATETIME values in ’YYYY-MM-DD HH:MM:SS’ format, but allows you to assign values to DATETIME columns using either strings or numbers.

DateTime Date最主要的区别在于:DateTime 可以记录日期和时间信息。而Date只记录日期信息。表示范围为: 1000-01-01 00:00:00  9999-12-31 23:59:59 MySql的按照YYYY-MM-DD HH:MM:SS对数据进行格式化,允许以字符串和数字的方式提交。

 

例如以数字的方式进行提交:
insert into time_table(CreateDate) values(20070409132013)

 

获取该类型的数据可以使用:java.sql.Timestamp类型

代码如下:
public void testDateTime() throws SQLException

{

       IDBFace DBFace =DBFactory.createMySqlFace();

DBFace.connect();

       //清空表

       String strDelete ="delete from time_table";

       DBFace.update(strDelete);

       //添加

             

       String strInsert ="insert into time_table(CreateDateTime) values(20070409132013)";

       DBFace.update(strInsert);

       //获取

       String strSelect ="select * from time_table";

       ResultSet rsBuffer =DBFace.select(strSelect);

       while(rsBuffer.next())

       {

              Timestamp tsBuffer =rsBuffer.getTimestamp("CreateDateTime");

              System.out.println(tsBuffer.toString());

       }

       DBFace.close();

}

执行结果: 2007-04-09 13:20:13.0

TimeStamp
A timestamp. The range is ’1970-01-01 00:00:00’ to partway through the year 2037. A TIMESTAMPcolumn is useful for recording the date and time of an INSERT or UPDATE operation. The firstTIMESTAMP column in a table is automatically set to the date and time of the most recent operation if you don’t assign it a value yourself. You can also set any TIMESTAMP column to the current date and time by assigning it a NULL value.

DateTime类型非常相似

范围为1970-01-01 –2037年,精度为1/

如果在Sql中未对Timestamp类型的列赋值,该列将被构造成当前时间。

提交NULL值也会使该列以当前时间录入。

如果时间提交错误,该列将被填入0.

TimestampDateTime 类型所需的存储空间更小,只需要4个字节,而DateTime需要8个字节。

但是有一点需要特别注意。Timestamp只能表示时间范围为1970 -2037.

使用Timestamp一定要确保提交的时间数据一定不会超过这个范围。

代码与DateTime类是,而且我不喜欢用,所以略掉了。
Time:

A time. The range is ’-838:59:59’ to ’838:59:59’. MySQL displays TIME values in ’HH:MM:SS’ format, but allows you to assign values to TIME columns using either strings or numbers.

 

Time只记录时间信息,不包含日期信息。

范围为-838:59:59  838:59:59, MySql HH:MM:SS格式化该数据,允许输入为字符串或者数字。

代码:
public void testTime() throws SQLException

       {

              IDBFace DBFace =DBFactory.createMySqlFace();

              DBFace.connect();

              //清空表

              String strDelete ="delete from time_table";

              DBFace.update(strDelete);

              //添加

             

              String strInsert ="insert into time_table(CreateTime) values(131211)";

              DBFace.update(strInsert);

              //获取

              String strSelect ="select * from time_table";

              ResultSet rsBuffer =DBFace.select(strSelect);

              while(rsBuffer.next())

              {

                     Time tmBuffer =rsBuffer.getTime("CreateTime");

                     System.out.println(tmBuffer.toString());

              }

              DBFace.close();

       }

执行结果: 13:12:11

Year

A year in two-digit or four-digit format. The default is four-digit format. In four-digit format, the allowable values are 1901 to 2155, and 0000. In two-digit format, the allowable values are 70 to 69, representing years from 1970 to 2069. MySQL displays YEAR values in YYYY format, but allows you to assign values to YEAR columns using either strings or numbers. The YEAR type is unavailable prior to MySQL 3.22.

 

Year可以有2种表示方式,4位的和2位的。

默认情况是4位。其范围为1901-2155

2位的表述法只记录后2 。其范围为1970-2069

允许以字符串或者数字的方式插入。

 

代码:
       public void testYear() throws SQLException

       {

              IDBFace DBFace =DBFactory.createMySqlFace();

              DBFace.connect();

              //清空表

              String strDelete ="delete from time_table";

              DBFace.update(strDelete);

              //添加

             

              String strInsert ="insert into time_table(CreateYear) values(2007)";

              DBFace.update(strInsert);

              //获取

              String strSelect ="select * from time_table";

              ResultSet rsBuffer =DBFace.select(strSelect);

              while(rsBuffer.next())

              {

                     Date dtBuffer =rsBuffer.getDate("CreateYear");

                     System.out.println(dtBuffer.getYear()+1900);

              }

              DBFace.close();

       }

执行结果:2007

需要说明的是:

Date.getYear()方法返回至1900年起经过了多少年。所以为了显示正确的时间,必须加上1900.

该方法已经被废弃。

 

另外。

有一种方法是:不使用上述任何一种类型来记录时间。

而是以char(vchar)的方式来记录时间。

这样做在插入数据和显示记录的时候固然不用进行任何转换而比较方便。

但是要承担2个重要的缺陷。

(1)    要单独开发方法验证时间数据的合法性。例如ajidjieoa字符串不是一个时间信息,但仍然可以正常插入。

(2)    如果系统需将时间范围做为条件进行记录检索。这也会是一个大麻烦。用字符串记录时间将无法使用MySql为时间提供的API.对时间范围检索的代码可能与数据库剥离。这样对性能必然造成影响。例如,要从100万条数据中查询时间范围为1992-3-12 –1992-3-13日的区区100条数据,你可能不得不将100万条数据都查出来,再开发新的方法进行过滤。

分享到:
评论

相关推荐

    MySql于Java数据类型对应列表

    ### MySQL与Java数据类型对应详解 #### 概述 在进行数据库操作时,尤其是在使用Java进行MySQL数据库开发的过程中,正确地映射数据类型是至关重要的一步。本文将详细介绍MySQL中的各种数据类型及其在Java中的对应...

    java、mysql以及oracle数据类型对照表

    MySQL的数据类型包括数值类型(如INT、DECIMAL)、字符串类型(如VARCHAR、TEXT)、日期和时间类型(如DATE、TIMESTAMP)以及二进制类型(如BLOB、VARBINARY)。在Oracle中,我们有类似的数据类型,如NUMBER、...

    ORACLE JAVA MYSQL类型转化对照

    ORACLE JAVA MYSQL类型转化对照

    Mysql、orcale 中的数据类型与java中的数据类型对应表.pdf

    对应日期时间类型可以使用 java.util.Date 和 java.sql.Date 等。对应字符串类型可以使用 String 等。 理解 MySQL 和 Oracle 中的数据类型与 Java 中的数据类型对应关系对于数据库应用开发非常重要。本文详细介绍了...

    java_mysql_数据类型对照.doc

    9. **日期时间类型**(DATE、TIME、DATETIME、TIMESTAMP、YEAR):分别对应Java中的`java.sql.Date`、`java.sql.Time`、`java.sql.Timestamp`,JDBC类型分别为91、92、93,用于存储日期、时间或两者结合的信息。...

    Java数据类型与MySql数据类型对照表

    本文讲述了Java数据类型与MySql数据类型对照表。分享给大家供大家参考,具体如下: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java....

    mysql-binlog-connector-java-0.21.0-API文档-中英对照版.zip

    标签:github、shyiko、mysql、binlog、connector、java、中英对照文档、jar包; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    mysql-binlog-connector-java-0.21.0.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表

    MySQL是世界上最流行的关系数据库管理系统之一,它的数据类型包括数字类型(如INT、DECIMAL)、字符串类型(如VARCHAR、TEXT)、日期和时间类型(如DATE、DATETIME)以及二进制类型(如BLOB)等。 例如,Hibernate...

    JDBC数据类型与数据库字段对应表——mysql篇

    JDBC数据类型与数据库字段对应表——mysql篇 数值型 整型 JDBC tinyint java.lang.Integer smallint mediumint java.lang.Long int bigint java.math.BigInteger

    MySQL API中文对照版

    MySQL API中文对照版文档(如`mysql5.1.chm`)能帮助中国开发者更直观地理解这些函数的含义和用法,减少学习和调试过程中的语言障碍,提高开发效率。同时,它还提供英文对照,便于查阅原版文档,获取最新、最全面的...

    Java常用数据库驱动,SQLServer、mysql、Oracle驱动

    本文将详细介绍Java中针对SQLServer、MySQL和Oracle这三种常见数据库的驱动及其使用方法。 首先,我们来了解一下**SQLServer驱动**。在Java中,微软的SQLServer数据库通常通过`sqljdbc42.jar`驱动进行连接。这个...

    Java项目-基于 Java+MySql+Swing学生信息管理.zip

    【标题】"Java项目-基于 Java+MySql+Swing学生信息管理.zip"是一个Java编程课程设计项目,它涵盖了使用Java编程语言、MySQL数据库管理和Swing GUI库来创建一个学生信息管理系统。这个项目旨在帮助学习者掌握Java后端...

    java英汉互译电子词典(完整版含数据库)

    这里提到的数据库可能使用的是关系型数据库,如MySQL或SQLite,用于存储和管理大量的单词和它们的汉语释义。在Java中,我们可以利用JDBC(Java Database Connectivity)API与数据库进行交互,执行SQL语句来实现数据...

    公历农历对照表, 用于数据库开发

    在数据库开发中,有时我们需要处理涉及日期和时间的数据,尤其是在中国,公历和农历的转换是常见的需求。这个“公历农历对照表”文件恰好提供了这样的功能,它可以帮助开发者便捷地进行公历与农历之间的转换,提升...

    Java+mysql+swing电影购票系统视频教程+源码+截图+数据库文件

    本教程主要涵盖的是一个基于Java、MySQL和Swing技术实现的电影购票系统,适用于初学者进行参考学习。这个系统能够帮助学生理解如何将这三种技术有效地整合在一起,以实现一个实际的应用程序。以下是对这些技术及其在...

    MySQL数据库连接语句

    MySQL数据库是世界上最受欢迎的开源关系型数据库之一,用于存储、管理和检索数据。连接MySQL数据库是进行数据操作的第一步,这通常通过编写特定的连接字符串来实现。本文将深入探讨MySQL数据库连接语句,并提供多种...

    数据库迁移及区别比较(Oracle,Sql Server,MySql).pdf

    - 提供了MySQL的建表SQL示例、Java到SQL数据类型映射表,以及Oracle与MySQL、SQL Server数据类型的转化对照表,作为迁移过程中的参考。 总的来说,数据库迁移是一项复杂的工作,涉及到多个层面的调整和优化。在...

    mysql自学总结.pdf

    MySQL是世界上最流行的关系型数据库管理系统之一,尤其在Java开发中被广泛应用。对于初学者来说,了解MySQL的基础知识和操作是至关重要的。以下是一份详细的MySQL自学总结,涵盖了从数据库基础到常用的SQL语句,以及...

Global site tag (gtag.js) - Google Analytics