`

[原]Java对数据库中时间的操作

阅读更多
日期类
java.util.Date下面继承了三个子类,分别是
java.sql.Time:针对数据库中的时间
java.sql.Date:针对数据库中的日期
java.sql.Timesamp:数据库中的时期日期部分

对于日期的格式化,常用的是
java.text.DateFormt类的子类java.text.SimpleDateFormat

如果要想获得日期中的具体的年,月,日,时,分,秒等,那么可以用java.util.Calendar类

声明:以上部分完全是API中的内容


/**
* Java对数据库中时间的操作
* @author DaHai
* 如果要取出数据库中的日期或时间,建议用Timestamp类
*
*/
public class DateTime {
public static void main(String[] args) {
DateTime oracle = new DateTime();
oracle.query();
}

public Connection getConnection() {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:test", "scott", "tiger");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

public void query() {
Connection conn = getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String time = "";
int dt = 0;
try {
pstmt = conn.prepareStatement("select scsj from erp_testwhere wygjz=1");
rs = pstmt.executeQuery();
while (rs.next()) {
Date d = rs.getDate("scsj");

//数据库为2008-1-8 16:51:00这种格式
//Date类即包括时间又包括日期
//因为是用的getDate方法,当做date取出来,所以时间没有取到
//因为是用的getTime方法,当做time取出来,所以日期没有取到
//输出为日期
System.out.println(rs.getDate("scsj"));
//输出为时间
System.out.println(rs.getTime("scsj"));

//注意打印格式,这里的rs.getDate只获取日期,要获得时间需用rs.getTime()
    //输出应该为2008年01月08日,但此处输出00:00:00,因为d是getDate()方法
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf.format(d));

dt = getDateTime(rs.getDate("scsj"),Calendar.MONTH);
System.out.println(dt);

time = this.getDate(rs.getTimestamp("scsj"));
System.out.println(time);
}
}  catch (SQLException e) {
try {
if(conn!=null){
conn.rollback();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally{
try {
if(rs!=null){
rs.close();
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(pstmt!=null){
pstmt.close();
pstmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/**
* 获得date字段的年份
* Timestamp类可以取出时间与日期,时间或日期
* 此处取日期
* @param ts
* @return
*/
public String getDate(Timestamp ts){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(ts);
}

/**
* 获得date字段的时间
* Timestamp类可以取出时间与日期,时间或日期
* 此处取时间
* @param ts
* @return
*/
public String getTime(Timestamp ts){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(ts);
}

/**
* 返回数据库中日期中的具体月份
* @param d
* @param dt,dt变量为Calendar的静态变量
* @return
*/
public int getDateTime(Date d ,int dt){
Calendar c = Calendar.getInstance();
c.setTime(d);
return c.get(dt);
}
}
6
5
分享到:
评论
2 楼 mj1389541 2008-05-14  
/**
* Java对数据库中时间的操作
* @author DaHai
* 如果要取出数据库中的日期或时间,建议用Timestamp类
*
*/
public class DateTime {
public static void main(String[] args) {
DateTime oracle = new DateTime();
oracle.query();
}

public Connection getConnection() {
Connection conn = null;
try {
Class.forName("oracle.<SPAN class=hilite1>jdbc</SPAN>.driver.OracleDriver");
conn = DriverManager.getConnection("<SPAN class=hilite1>jdbc</SPAN>:oracle:thin:@localhost:1521:test", "scott", "tiger");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

public void query() {
Connection conn = getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String time = "";
int dt = 0;
try {
pstmt = conn.prepareStatement("select scsj from erp_testwhere wygjz=1");
rs = pstmt.executeQuery();
while (rs.next()) {
Date d = rs.<SPAN class=hilite2>getDate</SPAN>("scsj");

//数据库为2008-1-8 16:51:00这种格式
//Date类即包括时间又包括日期
//因为是用的<SPAN class=hilite2>getDate</SPAN>方法,当做date取出来,所以时间没有取到
//因为是用的getTime方法,当做time取出来,所以日期没有取到
//输出为日期
System.out.println(rs.<SPAN class=hilite2>getDate</SPAN>("scsj"));
//输出为时间
System.out.println(rs.getTime("scsj"));

//注意打印格式,这里的rs.<SPAN class=hilite2>getDate</SPAN>只获取日期,要获得时间需用rs.getTime()
    //输出应该为2008年01月08日,但此处输出00:00:00,因为d是<SPAN class=hilite2>getDate</SPAN>()方法
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf.format(d));

dt = <SPAN class=hilite2>getDate</SPAN>Time(rs.<SPAN class=hilite2>getDate</SPAN>("scsj"),Calendar.MONTH);
System.out.println(dt);

time = this.<SPAN class=hilite2>getDate</SPAN>(rs.getTimestamp("scsj"));
System.out.println(time);
}
}  catch (SQLException e) {
try {
if(conn!=null){
conn.rollback();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally{
try {
if(rs!=null){
rs.close();
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(pstmt!=null){
pstmt.close();
pstmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/**
* 获得date字段的年份
* Timestamp类可以取出时间与日期,时间或日期
* 此处取日期
* @param ts
* @return
*/
public String <SPAN class=hilite2>getDate</SPAN>(Timestamp ts){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(ts);
}

/**
* 获得date字段的时间
* Timestamp类可以取出时间与日期,时间或日期
* 此处取时间
* @param ts
* @return
*/
public String getTime(Timestamp ts){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(ts);
}

/**
* 返回数据库中日期中的具体月份
* @param d
* @param dt,dt变量为Calendar的静态变量
* @return
*/
public int <SPAN class=hilite2>getDate</SPAN>Time(Date d ,int dt){
Calendar c = Calendar.getInstance();
c.setTime(d);
return c.get(dt);
}
}
1 楼 Jatula 2008-03-16  
我想说写得很好,但可以更好!
getTime,getDate两个方法用参数来控制输出代码会更加简洁;给个建议而已;

相关推荐

    Java数据库操作组件1.1

    Java数据库操作组件1.1是Java编程领域中用于与数据库交互的一个重要工具,它扩展了对多种数据类型的原生支持,使得开发人员可以更加灵活、高效地处理数据库操作。在这个组件中,我们可以发现一系列增强的功能和优化...

    JAVA实验报告四数据库编程.docx

    实验报告的主题是“JAVA实验报告四数据库编程”,主要目的是让学生掌握基本的数据库管理系统(DBMS)使用、理解Java数据库连接(JDBC)的概念,并通过JDBC-ODBC桥接技术来开发实际的数据库系统。实验内容包括设计和...

    数据库框架Mybatis-plus,实现java代码对数据库的增删改查

    Mybatis-plus是一个基于...文件“05-mybatisplus”可能包含了一个简单的示例项目,展示了如何在Java项目中集成和使用Mybatis-plus进行数据库操作。通过学习这个示例,你可以更好地理解和应用Mybatis-plus的各种特性。

    java-JDBC学习笔记(java连接数据库编程)

    Java JDBC(Java Database Connectivity)是Java平台中用于与各种数据库进行交互的标准API,它使得Java开发者能够编写数据库无关性的代码,实现对不同数据库的操作。在本文中,我们将深入探讨JDBC2.0规范,特别是其...

    java各种JDBC数据库驱动文件

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。JDBC提供了一种标准的API,使得开发者无需关心数据库的特定语法,就能通过Java程序进行数据操作。这个压缩包文件...

    数据库基础知识.(java程序员)

    这份面试题涵盖了数据库系统的基本架构、用户分类、设计流程、数据完整性、SQL操作等方面,旨在帮助求职者提升对数据库的理解。 1. **数据库系统的三层体系结构**:通常包括用户层、应用程序接口层和数据库管理层。...

    原生java swing窗体 车辆管理系统GUI发布+源码+数据库

    《基于Java Swing的车辆管理系统GUI详解》 在IT领域,开发直观、易用的图形用户界面(GUI)是提升用户体验的关键。本篇文章将深入探讨一个使用...通过深入研究这个系统,可以提升对Java GUI编程和数据库管理的理解。

    java数据库课程设计_编程词典用户管理系统

    用于完成词典的销售操作,并且在销售时可以批量添加多条销售信息,也就是针对一个用户可以在一个界面中销售多种词典,并且每添加一种编程词典信息,系统会自动计算相关数据,销售成功后会将销售信息分别保存在销售主...

    基于java的weblogic+j2ee构建音乐网站(原代码+数据库).zip

    描述中的“基于java的weblogic+j2ee构建音乐网站(原代码+数据库).zip”表明这是一个使用Java编程语言,借助WebLogic服务器,并利用J2EE框架来开发的音乐类网站项目。同时,该资源包含了项目的原始代码和数据库,这...

    java源码包---java 源码 大量 实例

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    JAVA图书馆管理系统原代码

    通过研究和理解这个JAVA图书馆管理系统原代码,开发者不仅可以学习到JAVA编程基础,还能深入理解软件工程中的系统设计、数据库操作、异常处理等多个方面的知识,这对于提升JAVA开发技能大有裨益。

    Java核心技术原书第10版中文版.pdf

    8. **JavaSE和JavaEE的区别**:书中也会讲解Java标准版(Java SE)和企业版(Java EE)之间的区别,以及Java EE提供的企业级服务,如JDBC数据库连接、Servlet、JSP、EJB等。 9. **JVM和内存管理**:介绍Java虚拟机...

    Java下读写DBF数据库文件格式研究.pdf

    此外,DBF文件在Windows 7及更新的操作系统中的原生支持已逐渐消失,而较老版本的Excel软件曾经支持打开和保存DBF文件,但在后续版本中这一支持也已被移除。 Java语言通过JDBC(Java Database Connectivity)技术...

    Java openPlantV4+ API

    3. SQL接口:通过封装SQL接口,开发者可以在Java代码中编写SQL查询,简化了数据库操作。 4. 订阅机制:API支持订阅实时数据(Realtime)、报警数据(Alarm)和静态信息(Point)表,增强了实时数据监控和处理的能力...

    SSM(Spring+SpringMvc+Mybatis)图片上传保存到数据库与回显+sql

    4. **数据库操作**:在Mybatis中,创建一个对应的Mapper接口和XML文件,编写插入图片信息(如文件名、路径、上传时间等)的SQL语句。使用Mybatis的`&lt;insert&gt;`标签,将文件信息保存到数据库中。 5. **回显图片**:在...

    Java核心技术电子书原版

    8. **Java 8新特性**:介绍Lambda表达式、Stream API和日期时间API等Java 8的新特性。 9. **Java性能优化**:提供代码优化技巧,包括算法优化、内存管理和并发性能分析。 通过阅读这两卷书,读者将全面掌握Java...

    Java基础入门自学课件 第15章 JDBC数据库访问(共12页).ppt

    本章节将深入讲解JDBC的基础知识,帮助初学者掌握如何在Java中连接和操作数据库。 ### 1. JDBC概述 JDBC是Java与数据库交互的标准接口,它提供了以下功能: - **连接数据库**:JDBC提供DriverManager类来连接到不同...

    H2数据库官方文档(English)

    - **日期和时间**(Date and Time):说明了如何在数据库中处理日期和时间数据。 - **集成Spring框架**(Using Spring):提供了如何在Spring框架中使用H2数据库的指南。 #### 特性 - **特性列表**(Feature List...

    java源码包3

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

Global site tag (gtag.js) - Google Analytics