Java中的Date Time 与SQL Server 2005里的Datetime 之间的交互
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 之间的交互的更多相关文章
- SQL Server 2005 中的分区表和索引
SQL Server 2005 中的分区表和索引 SQL Server 2005 69(共 83)对本文的评价是有帮助 - 评价此主题 发布日期 : 3/24/2005 | 更新 ...
- 如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
https://technet.microsoft.com/en-us/solutionaccelerators/dd537566.aspx 注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完 ...
- 存储过程系列之调试存储过程 SQL Server 2005
在数据库中直接调试 在数据库中直接调试是调试SQL Server 2005的存储过程的最简单的方法. 在Visual Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地单 ...
- SQL SERVER 2005 请求失败或服务未及时响应
出现的问题如图所示,在开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager中,打开 ...
- 第87节:Java中的Bootstrap基础与SQL入门
第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...
- Java中的Date类型无法赋值给数据库的datetime类型
因为Java中new Date()的结果是"Thu Aug 27 19:03:54 CST 2020",而mysql中的datetime不接受这样的日期格式,插入数据会报错. 解决 ...
- win7中 SQL server 2005无法连接到服务器,错误码:18456
win7中 SQL server 2005无法连接到服务器,错误码:18456.. 数据库刚装完.我用Windows登陆 结果登陆不上去.. 选中SQL Server Management Stud ...
- SQL SERVER 2005/2008 中关于架构的理解(二)
本文上接SQL SERVER 2005/2008 中关于架构的理解(一) 架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...
- SQL SERVER 2005/2008 中关于架构的理解(一)
SQL SERVER 2005/2008 中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询, ...
随机推荐
- VIM基本命令及自用配置
VIM基本命令 光标移动 G 最后一行 nG 移动到第n行 n回车 光标下移n行 gg 第一行 查找和替换 /word n 重复前一个查找操作 N 向上查找 :n1,n2s/word1/word2/g ...
- 21-从零玩转JavaWeb-多态详解
配套视频详解 多态思想 eclipse快捷键设置 多态的好处 多态方法调用 instanceof关键字 多态中字段注意点 一.什么是多态 既然子类是一种特殊的父类 那么我们可不可以认为 狗 ...
- 【HDU3394】Railway
[题目描述] 有一个公园有n个景点,公园的管理员准备修建m条道路,并且安排一些形成回路的参观路线.如果一条道路被多条道路公用,那么这条路是冲突的:如果一条道路没在任何一个回路内,那么这条路是不冲突的 ...
- selenium2 用selenium安装、加载、启用插件(一)
一:下载 下载地址是:http://docs.seleniumhq.org/download/
- “Device eth0 has different MAC address than expected, ignoring.”问题
配IP后进行激活的时候提示如下错误:("Device eth0 has different MAC address than expected, ignoring.") 百度了下, ...
- Docker学习之路(一)
容器简介 管理程序虚拟化(hypervisor virtualization, HV)是通过中间虚拟运行于物理硬件之上.而容器是直接运行在操作系统内核之上用户空间.因此,容器虚拟化运行也成为“操作系统 ...
- linux c 获取系统时间
#include <time.h> main() { time_t timep; time (&timep); printf(“%s”,asctime(gmtime(&ti ...
- Learning from Imbalanced Classes
https://www.svds.com/learning-imbalanced-classes/ 下采样即 从大类负类中随机取一部分,跟正类(小类)个数相同,优点就是降低了内存大小,速度快! htt ...
- MVC5应用程序生命周期lifecycle
- datagrid 自定义 pager
$(document).ready(function(){ var p = $('.easyui-datagrid').datagrid('getPager'); $(p).pagination({ ...