Java中的Date Time 与SQL Server 2005里的Datetime 之间的交互
来源:互联网 发布:mysql初学者书籍推荐 编辑:程序博客网 时间:2024/06/06 01:31
Preface
Environment:
Platform: Windows XP
Language: Java 1.5
IDE: MyEclipse 6.0.1
Database: SQL Server 2005 Enterprise en
Introduction
本文主要讲述Java中的Date Time 与SQL Server 2005里的Datetime 如何进行交互。涉及到的Date Type有
java.util.Date
java.sql.Date
java.sql.Time
java.sql.Timestamp
Section 1 - java.util.Date
经过一些testing,大概了解了这几个类的实际用法与限制。
java.util.Date create 的instance 是不能直接让JDBC 存到DB的,它会出现如下Exception:
Conversion failed when converting datetime from character string.
要将java.util.Date存到DB必须经过 type conversion成为sql下的Date,Time或Timestamp。
Section 2 - java.sql.Date
java.sql.Date只能将date存到DB,time将被截取而由DB中最小的time值(00:00:00)所取代。
Code:
java.util.Date currentDateTime = new java.util.Date();
System.out.println(currentDateTime);
System.out.println(currentDateTime.getTime());
Date currentDate = new Date(currentDateTime.getTime());
System.out.println(currentDate);
System.out.println(currentDate.getTime());
String strSQL = "insert into TestDateTime values('"+currentDate+"')";
executeHelper(strSQL);
Console Output:
Tue May 20 15:51:48 CST 2008
1211269908671
2008-05-20
1211269908671
Datebase Output:
2008-5-20 0:00:00
从result可以看出java.sql.Date实际并不是在其instance中就截取time,因为得到的Long值仍然跟java.util.Date的Long值一样,只是在显示输出或者对DB操作时才截去tIme的输出。0:00:00是由DB其System的最小time补充的。
Section 3 - java.sql.Time
java.sql.Time只能讲time存到DB,date将被截取而由DB中最小的date值(1900-1-1)所取代。
Code:
java.util.Date currentDateTime = new java.util.Date();
System.out.println(currentDateTime);
System.out.println(currentDateTime.getTime());
Time currentTime = new Time(currentDateTime.getTime());
System.out.println(currentTime);
System.out.println(currentTime.getTime());
String strSQL = "insert into TestDateTime values('"+currentTime+"')";
executeHelper(strSQL);
Console Output:
Tue May 20 16:03:52 CST 2008
1211270632312
16:03:52
1211270632312
Datebase Output:
1900-1-1 16:03:52
从result可以看出java.sql.Time实际并不是在其instance中就截取date,因为得到的Long值仍然跟java.util.Date的Long值一样,只是在显示输出或者对DB操作时才截去date的输出。1900-1-1是由DB其System的最小date补充的。
Section 4 - java.sql.Timestamp
java.sql.Timestamp可以将date和time都存到DB。
Code:
java.util.Date currentDateTime = new java.util.Date();
System.out.println(currentDateTime);
System.out.println(currentDateTime.getTime());
Timestamp currentTimestamp = new Timestamp(currentDateTime.getTime());
System.out.println(currentTimestamp);
System.out.println(currentTimestamp.getTime());
String strSQL = "insert into TestDateTime values('"+currentTimestamp+"')";
executeHelper(strSQL);
Console Output:
Tue May 20 16:24:40 CST 2008
1211271880796
2008-05-20 16:24:40.796
1211271880796
Datebase Output:
2008-5-20 16:24:40
从result可以看出java.sql.Timestamp的存储格式跟java.util.Date的不同,Timestamp的格式是专门对DB操作所定义的规范化格式,也就是说DB只能接收到这种格式传过来的值,这也可以大概知道为什么java.util.Date为什么不能直接传值给DB了。
- Java中的Date Time 与SQL Server 2005里的Datetime 之间的交互
- mysql中date、datetime、time、timestamp之间的使用
- sql server datetime 与char之间的装换
- sql server datetime 与char之间的装换
- sql server datetime 与char之间的转换
- SQL Server日期处理datetime和date之间的相互转换
- SQL Server日期处理datetime和date之间的相互转换
- SQL Server日期处理datetime和date之间的相互转换
- SQL 中 date 与datetime的区别
- Java编程:java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp之间的区别
- sql server 中将datetime类型转换为date,或者time
- sql server 中将datetime类型转换为date,或者time
- sql server 中将datetime类型转换为date,或者time
- sql server 中将datetime类型转换为date,或者time
- java中一个String型时间转换成JAVA.SQL.DATE型时间在添加到SQL Server中的datetime型字段里(
- .NET Framework的DateTime与SQL Server的datetime比较
- date 与datetime的区别
- java中的Date与String之间的转换
- 水晶报表应用高级参数功能
- 水晶报表中筛选记录的三种解决方案
- Page基类的重写
- 3 种include html的方法
- 编程更改公式字段示例代码
- Java中的Date Time 与SQL Server 2005里的Datetime 之间的交互
- C# 2005 GenerateMember 属性说明
- 水晶报表公式使用必读
- Ant 学习笔记
- SQL2005系统升级手记之一-解决sa帐户被锁定
- 配置Spring,针对Service层的bean做事务处理
- spring事务处理
- AcegiSecurity学习记录(三)
- 一个求平均成绩的python的程序