Java.util.Date类型的转化成为数据库中的Date类型。

最完整的一个网页:http://www.zxbc.cn/html/20080905/65272.html

 

作者:天涯 来源:中国自学编程网 发布日期:1220576012
在JDK 1.1后,java.util.Date 类型的大多数方法已经不推荐使用了。代替它的是Calendar。

而在java.sql.Date 和 java.util.Date之间,有些微妙的关系。

如何将Date类型插入数据库中,成为好多人的一个不小的障碍。

当然,并不一定要在外部插入时间,因为在数据库中,可以让它自动插入,比如:MSSQL里面,用getdate()来插入当前时间,而在Insert时,便可以不用管它了。但有的时候还是避免不了,要手工插入时间,以更新数据库。

1、java.util.Calendar 格式化时间

Calendar cal = new GregorianCalendar();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
String week = "";
switch(dayOfWeek) {
case 1:
week = "星期天"; break;
case 2:
week = "星期一"; break;
case 3:
week = "星期二"; break;
case 4:
week = "星期三"; break;
case 5:
week = "星期四"; break;
case 6:
week = "星期五"; break;
default:
week = "星期六"; break;

int hour = cal.get(Calendar.HOUR_OF_DAY); // 24小时制
// int hour = cal.get(Calendar.HOUR); // 12小时制
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
String h,m,s;
if(hour<10) h = "0"+hour; else h = hour+"";
if(minute<10) m = "0"+minute; else m = minute+"";
if(second<10) s = "0"+second; else s = second+"";

在JSP中输出是:

今天是: <%=year%>年<%=month%>月<%=day%>日<%=week%> <%=h%>:<%=m%>:<%=s%>

结果: 今天是: 2006年4月14日星期五 05:35:26

2、在数据库中插入时间

PreparedStatement ps = con.prepareStatement("insert into TableName(dAddTime) values(?)");
这里有三种方式:
1) ps.setDate(1,new java.sql.Date(System.currentTimemillis()));
2) ps.setTime(2,new java.sql.Time(System.currentTimemillis()));
3) ps.setTimestamp(3,new java.sql.Timestamp(System.currentTimemillis()));
第一种只插入年月日 0000-00-00
第二种只插入时间 00:00:00
第三种则插入完整的时间 0000-00-00 00:00:00.000 .000是毫秒数。

3、取出数据库时间

通常只有两种:
1) getDate(String colname); // 取出日期 格式:0000-00-00
2) getTimestamp(String colname); // 取出日期和时间 格式:0000-00-00 00:00:00.000
3) getTime(String colname); // 只取出时间部份 格式:00:00:00 几乎不用,因为没有人只会取出时间,而不用日期。
 
相关文章关于 JAVA操作数据库Datetime数据
·在高级的复制中切换主体定义站点
·PostgreSQL 自动Vacuum配置
·如何批量删除数据库中被注入的代码?
·如何更改数据库状态的事务终止
·数据库触发器(Trigger)的一点使用心得
·从IO看数据库底层实现原理

 

 

方法1

SimpleDateFormat s = new SimpleDateFormat("yyyy/MM/dd");         
Date d = s.parse("1987/01/13");  

java.sql.Date date = new java.sql.Date(d.getTime());

 

String dateStr = "2009-11-21";
java.sql.Date date = new java.sql.Date();
date.valueOf(dataStr);

 

 

 

首先加入import java.util.Date头文件

然后用

darr.setsDate(rs.getTimestamp("存储时间"));

获取准确的时分秒时间,而后进行转换

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ").format(dArr.getsDate())

将其转换为24小时进制的年月日时分秒数据即可!对于12小时的只需要将上句改为:

new SimpleDateFormat("yyyy-MM-dd hh:mm:ss ").format(dArr.getsDate())

即可

已经过测试成功读取:2012-05-23 16:26:54

 

 

 

测试数据库:

/*
SQLyog Ultimate - MySQL GUI v8.2
MySQL - 5.1.55-community
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;

create table `datedemo` (
 `id` varchar (96),
 `datedemo` timestamp
);

 

 

package cn.itcast.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;

public class DaoDemo {

 @SuppressWarnings("static-access")
 @Test
 public void testDateOperation() throws Exception {
  QueryRunner runner = new QueryRunner(new JdbcUtils().getDataSource());
  
  String sql = "insert into datedemo(id,datedemo) values(?,?)";
  String dateString = "2009-10-01 05:35:26";
  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  Date date = simpleDateFormat.parse(dateString);
  runner.update(sql,new Object[]{"1",new java.sql.Timestamp(date.getTime())});
  //runner.update(sql,new Object[]{"1",new java.sql.Time(date.getTime())});
  //runner.update(sql,new Object[]{"1",new java.sql.Date(date.getTime())});
 }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果你需要将数据库带有时分秒的日期转换为日期类型,可以使用 MyBatis 内置的 `java.util.Date` 类型和 `java.text.SimpleDateFormat` 类来进行转换。以下是一个示例: ``` <select id="getUsersByDate" resultType="User"> SELECT * FROM users WHERE DATE(create_time) = #{date, javaType=java.util.Date, jdbcType=DATE, typeHandler=org.apache.ibatis.type.DateTypeHandler} </select> ``` 在上面的示例,我们定义了一个 `getUsersByDate` 查询的 SQL 语句,它使用了一个带有时分秒的日期参数 `date`。我们使用 `DATE` 函数将 `create_time` 列转换为日期类型,然后将其与参数 `date` 进行比较。我们将参数的 Java 类型设置为 `java.util.Date`,JDBC 类型设置为 `DATE`,并指定了一个 `org.apache.ibatis.type.DateTypeHandler` 类型处理器,这样 MyBatis 就会将它们转换为日期类型。 如果你需要将日期类型的参数转换为带有时分秒的日期,也可以使用 `java.text.SimpleDateFormat` 类来进行转换。以下是一个示例: ``` <insert id="addUser" parameterType="User"> INSERT INTO users (name, create_time) VALUES (#{name}, #{createTime, javaType=java.util.Date, jdbcType=TIMESTAMP, typeHandler=org.apache.ibatis.type.DateTypeHandler, javaTypeHandler=org.apache.ibatis.type.DateOnlyTypeHandler}) </insert> ``` 在上面的示例,我们定义了一个 `addUser` 插入的 SQL 语句,它使用了一个日期参数 `createTime`。我们将参数的 Java 类型设置为 `java.util.Date`,JDBC 类型设置为 `TIMESTAMP`,并指定了一个 `org.apache.ibatis.type.DateTypeHandler` 类型处理器和一个 `org.apache.ibatis.type.DateOnlyTypeHandler` Java 类型处理器。`org.apache.ibatis.type.DateTypeHandler` 类型处理器用于将 Java 的 `java.util.Date` 类型转换为 JDBC 的 `TIMESTAMP` 类型,而 `org.apache.ibatis.type.DateOnlyTypeHandler` Java 类型处理器用于将 Java 的 `java.util.Date` 类型转换为不带时分秒的日期类型。这样,在插入数据时,MyBatis 就会自动将 `createTime` 参数转换为不带时分秒的日期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值