Jdbc时间类型的处理
2017-10-26 16:26
225 查看
在mysql中常用的时间类型为Date,Time,Timestamp(时间戳)
同样,在java中也有三个时间类型与之对应,Date,Time,Timestamp,这三个时间类在java.sql包中,它们都是java.util.Date的子类,需要注意的是,Timestamp只是Date类的实现继承,而不是类型继承,下面请看JDK API1.6中关于三个子类的详细介绍
一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL
为了与 SQL
一个与
应该将日期组件设置为 1970 年 1 月 1 日的 "zero epoch" 值并且不应访问该值。
一个与
计算 Timestamp 对象的精度为二者之一:
注:此类型由
鉴于
具体的例子:
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.Time;
import java.sql.Timestamp;
import jdbc1025.DbUtil;
public class DateAndTime {
public static void main(String[] args) {
Connection conn=DbUtil.getConnection();
Date date=new Date(System.currentTimeMillis());
Time time=new Time(System.currentTimeMillis());
Timestamp timestamp=new Timestamp(System.currentTimeMillis());
PreparedStatement ps=null;
try{
ps=conn.prepareStatement("insert into DateTest values(null,?,?,?)");
for(int i=0;i<10;i++) {
ps.setDate(1, date);
ps.setTime(2, time);
ps.setTimestamp(3, timestamp);
ps.execute();
}
System.out.println("执行成功");
}catch(Exception e) {
e.printStackTrace();
}finally {
DbUtil.close(ps);
DbUtil.close(conn);
}
}
}
同样,在java中也有三个时间类型与之对应,Date,Time,Timestamp,这三个时间类在java.sql包中,它们都是java.util.Date的子类,需要注意的是,Timestamp只是Date类的实现继承,而不是类型继承,下面请看JDK API1.6中关于三个子类的详细介绍
public class Dateextends Date
一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL
DATE值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。
为了与 SQL
DATE的定义一致,由
java.sql.Date实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。
public class Timeextends Date
一个与
java.util.Date类有关的瘦包装器 (thin wrapper),它允许 JDBC 将该类标识为 SQL
TIME值。
Time类添加格式化和解析操作以支持时间值的 JDBC 转义语法。
应该将日期组件设置为 1970 年 1 月 1 日的 "zero epoch" 值并且不应访问该值。
public class Timestampextends Date
一个与
java.util.Date类有关的瘦包装器 (thin wrapper),它允许 JDBC API 将该类标识为 SQL
TIMESTAMP值。它通过允许小数秒到纳秒级精度的规范来添加保存 SQL
TIMESTAMP小数秒值的能力。Timestamp 也提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力。
计算 Timestamp 对象的精度为二者之一:
19,其为 yyyy-mm-dd hh:mm:ss 格式下的字符数
20 + s,其为 yyyy-mm-dd hh:mm:ss.[fff...] 格式下的字符数,
s表示给定 Timestamp 的标度(其小数秒精度)。
注:此类型由
java.util.Date和单独的毫微秒值组成。只有整数秒才会存储在
java.util.Date组件中。小数秒(毫微秒)是独立存在的。传递不是
java.sql.Timestamp实例的对象时,
Timestamp.equals(Object)方法永远不会返回
true,因为日期的毫微秒组件是未知的。因此,相对于
java.util.Date.equals(Object)方法而言,
Timestamp.equals(Object)方法是不对称的。此外,
hashcode方法使用底层
java.util.Date实现并因此在其计算中不包括毫微秒。
鉴于
Timestamp类和上述
java.util.Date类之间的不同,建议代码一般不要将
Timestamp值视为
java.util.Date的实例。
Timestamp和
java.util.Date之间的继承关系实际上指的是实现继承,而不是类型继承。
具体的例子:
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.Time;
import java.sql.Timestamp;
import jdbc1025.DbUtil;
public class DateAndTime {
public static void main(String[] args) {
Connection conn=DbUtil.getConnection();
Date date=new Date(System.currentTimeMillis());
Time time=new Time(System.currentTimeMillis());
Timestamp timestamp=new Timestamp(System.currentTimeMillis());
PreparedStatement ps=null;
try{
ps=conn.prepareStatement("insert into DateTest values(null,?,?,?)");
for(int i=0;i<10;i++) {
ps.setDate(1, date);
ps.setTime(2, time);
ps.setTimestamp(3, timestamp);
ps.execute();
}
System.out.println("执行成功");
}catch(Exception e) {
e.printStackTrace();
}finally {
DbUtil.close(ps);
DbUtil.close(conn);
}
}
}
相关文章推荐
- JDBC和ibatis中时间类型的处理
- jdbc的Date类型处理,解决java.util.date与java.sql.date的时间数据丢失
- JAXB处理时间类型
- JavaScript 遗漏知识再整理;错误处理,类型转换以及获取当前时间、年份、月份、日期;
- JDBC中日期/时间的处理技巧
- 数据库日期时间类型的处理
- Android——类型转换 时间处理
- mysql处理varchar类型的between和and的时间问题少一天解决;
- jdbc 日期时间相关的类型
- mysql 时间类型精确到毫秒、微秒及其处理
- 系统开发中的时间类型的处理问题
- ojdbc操作oracle时间类型字段的处理
- Oracle C#处理时间类型的Insert
- PHPExcel对于Excel中日期和时间类型的处理
- springMVC中返回json时,日期类型自动转换为long类型的时间戳的处理方案(一个配置解决)
- Gson处理时间类型数据
- jdbc 日期时间相关的类型
- JDBC系列:(8)JDBC中大文本类型的处理
- postgreSQL字符串类型时间处理
- spring mvc处理提交的时间类型的参数