JDBC—测试时间处理(java.sql.Date,Time,Timestamp)

测试时间处理(java.sql.Date,Time,Timestamp)

/**
 * java.util.Date 
 * – 子类:java.sql.Date 表示年月日 
 * – 子类:java.sql.Time 表示时分秒 
 * –子类:java.sql.Timestamp 表示年月日时分秒
 * 如果需要插入指定日期,可以使用Calendar、DateFormat
 * 测试时间处理(java.sql.Date,Time,Timestamp)
 */
public class Demo07 {
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement ps1 = null;
		try {
			// 加载驱动类
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/testjdbc?useUnicode=true&characterEncoding=UTF-8", "root", "root");

			
			ps1 = conn.prepareStatement("insert into t_user (username,pwd,regTime,lastLoginTime) values (?,?,?,?)");
			ps1.setObject(1, "林伟茂");
			ps1.setObject(2, "123456");
			
			// System.currentTimeMillis() 传入当前时间
			java.sql.Date date = new java.sql.Date(System.currentTimeMillis());
			Timestamp stamp = new Timestamp(System.currentTimeMillis());  // 如果需要插入指定日期,可以使用Calendar、DateFormat
			
			ps1.setDate(3, date);
			ps1.setTimestamp(4, stamp);
			ps1.execute();
			
			System.out.println("插入一个用户,林伟茂");

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps1 != null) {
					ps1.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

测试插入随机日期

/**
 * 
 * 测试插入随机日期
 */
public class Demo07_1 {
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement ps1 = null;
		try {
			// 加载驱动类
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/testjdbc?useUnicode=true&characterEncoding=UTF-8", "root", "root");

			for (int i = 0; i < 1000; i++) {
				ps1 = conn.prepareStatement("insert into t_user1 (username,pwd,regTime,lastLoginTime) values (?,?,?,?)");
				ps1.setObject(1, "林伟茂"+i);
				ps1.setObject(2, "123456");

				// System.currentTimeMillis() 传入当前时间
				// 插入随机日期
				int rand = 100000000+new Random().nextInt(1000000000);
				
				java.sql.Date date = new java.sql.Date(System.currentTimeMillis()-rand);
				Timestamp stamp = new Timestamp(System.currentTimeMillis()-rand); // 如果需要插入指定日期,可以使用Calendar、DateFormat
				
				ps1.setDate(3, date);
				ps1.setTimestamp(4, stamp);
				ps1.execute();
			}
			System.out.println("插入一个用户,林伟茂");

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps1 != null) {
					ps1.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

取出指定时间段的数据(数据为 Date 类型的,年月日的形式 例如:2020-02-17)

format(Date date) :将日期格式化成日期/时间字符串。 (返回类型为 String 类型)
parse(String source) :从给定字符串的开始解析文本以生成日期。 (返回类型为 Date 类型)

/**
 * 
 * 测试时间处理(java.sql.Date,Time,Timestamp),取出指定时间段的数据
 * 取出指定时间段的数据(数据为Date类型的,年月日的形式  例如:2020-02-17)
 */
public class Demo08 {

	// 将字符串代表的日期转为long数字(格式:yyyy-MM-dd hh:mm:ss)
	public static long str2Date(String dateStr) {
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		try {
			// 把传的字符串转成一个Date对象,然后在 getTime(),直接获取long类型的数值
			return format.parse(dateStr).getTime();
		} catch (ParseException e) {
			e.printStackTrace();
			return 0;
		}
	}

	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			// 加载驱动类
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/testjdbc?useUnicode=true&characterEncoding=UTF-8", "root", "root");
			
			// 取出指定时间段的数据(数据为Date类型的,年月日的形式  例如:2020-02-17)
			ps = conn.prepareStatement("select * from t_user1 where regTime>? and regTime < ?");
			java.sql.Date start = new java.sql.Date(str2Date("2020-2-15 10:23:45"));
			java.sql.Date end = new java.sql.Date(str2Date("2020-2-18 10:23:45"));
			ps.setObject(1, start);
			ps.setObject(2, end);

			
			rs = ps.executeQuery();
			while (rs.next()) {
				System.out.println(rs.getInt("id") + "---" + rs.getString("username") + "---" + rs.getDate("regTime"));
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null) {
					ps.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

取出指定时间段的数据(数据为 Timestamp 类型的,年月日时间的形式 例如:2020-02-17 13:30:27.0)

/**
 * 
 * 测试时间处理(java.sql.Date,Time,Timestamp),取出指定时间段的数据
 * 取出指定时间段的数据(数据为Timestamp类型的,年月日时间的形式  例如:2020-02-17 13:30:27.0)
 */
public class Demo08_1 {
	
	// 将字符串代表的日期转为long数字(格式:yyyy-MM-dd hh:mm:ss)
	public static long str2Date(String dateStr) {
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		try {
			// parse(String source):从给定字符串开始解析文本以生成日期
			// 把传的字符串转成一个Date对象,然后在 getTime(),直接获取long类型的数值
			return format.parse(dateStr).getTime();
		} catch (ParseException e) {
			e.printStackTrace();
			return 0;
		}
	}

	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			// 加载驱动类
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/testjdbc?useUnicode=true&characterEncoding=UTF-8", "root", "root");

			// 取出指定时间段的数据(数据为Date类型的,年月日的形式  例如:2020-02-17)
//			ps = conn.prepareStatement("select * from t_user1 where regTime>? and regTime < ?");
//			java.sql.Date start = new java.sql.Date(str2Date("2020-2-15 10:23:45"));
//			java.sql.Date end = new java.sql.Date(str2Date("2020-2-18 10:23:45"));
//			ps.setObject(1, start);
//			ps.setObject(2, end);
//			rs = ps.executeQuery();
//			while (rs.next()) {
//				System.out.println(rs.getInt("id") + "---" + rs.getString("username") + "---" + rs.getDate("regTime"));
//			}
			
			
			// 取出指定时间段的数据(数据为lastLoginTime类型的,年月日的形式  例如:2020-02-17 13:30:27.0)
			// order by:数据进行升序
			ps = conn.prepareStatement("select * from t_user1 where lastLoginTime>? and lastLoginTime < ? order by lastLoginTime");
			Timestamp start = new Timestamp(str2Date("2020-2-17 13:10:20"));
			Timestamp end = new Timestamp(str2Date("2020-2-17 15:9:10"));
			ps.setObject(1, start);
			ps.setObject(2, end);
			
			
			rs = ps.executeQuery();
			while (rs.next()) {
				System.out.println(rs.getInt("id") + "---" + rs.getString("username") + "---" + rs.getTimestamp("lastLoginTime"));
			}
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null) {
					ps.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle官方11g 最新版jdbc驱动。 新特性:   1、支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML类型没有被支持,是使用ojdbc6.jar来支持。J2SE 5.0 和 JDBC 3.0 全面支持使用ojdbc5.jar。   2.不再支持oracle.jdbc.driver。从9.0.1开始的每个release都推荐使用oracle.jdbc。这一天终于到来,在11g中,引用oracle.jdbc.driver不再通过编译。   3.j2se 1.2,1.3,1.4不再支持。11R1不再包括这些版本的jar和zip,如果仍然使用这些版本,可以继续使用10gR2的jdbc。   4.11gR1 Thin driver支持AES加密算法,SHA1 hash算法,RADIUS, KERBEROS,SSL认证机制.   5.支持ANYDATE和ANYTYPE类型。这两种类型自9i引入,11R1前,程序员只能通过PL/SQL操作。   6.高级队列支持。11R1提供了访问AQ的高性能接口。   7.支持数据库变更通知。   8.Thin和OCI的数据库启动和关闭。11R1提供了这样的方法来启动和关闭数据库。   9.新的工厂方法。Oracle JDBC 11R1 oracle.jdbc.OracleConnection提供了创建Oracle对象的工厂方法。   包括ARRAY, BFILE, DATE, INTERVALDS, NUMBER, STRUCT, TIME,TIMESTAMP,TIMESTAMP等。   ojdbc5.jar: 适用于jdk5   ojdbc6.jar: 适用于jdk6   ***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样   ---------------------------------------------------   总体讲新版本的JDBC驱动 性能强、很多bug被发现并已解决。   我遇到的,之前使用ojdbc14.jar(不记得哪个版本了)批量插入10万条,实际只插入了3万多条,其它的丢失了,换ojdbc6.jar后,一次commit批量插入100万条也OK了。   尽量使用和数据库版本一致的驱动,有bug时,换高版本的JDBC驱动试试 。
Oracle官方11g 最新版jdbc驱动。 新特性:   1、支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML类型没有被支持,是使用ojdbc6.jar来支持。J2SE 5.0 和 JDBC 3.0 全面支持使用ojdbc5.jar。   2.不再支持oracle.jdbc.driver。从9.0.1开始的每个release都推荐使用oracle.jdbc。这一天终于到来,在11g中,引用oracle.jdbc.driver不再通过编译。   3.j2se 1.2,1.3,1.4不再支持。11R1不再包括这些版本的jar和zip,如果仍然使用这些版本,可以继续使用10gR2的jdbc。   4.11gR1 Thin driver支持AES加密算法,SHA1 hash算法,RADIUS, KERBEROS,SSL认证机制.   5.支持ANYDATE和ANYTYPE类型。这两种类型自9i引入,11R1前,程序员只能通过PL/SQL操作。   6.高级队列支持。11R1提供了访问AQ的高性能接口。   7.支持数据库变更通知。   8.Thin和OCI的数据库启动和关闭。11R1提供了这样的方法来启动和关闭数据库。   9.新的工厂方法。Oracle JDBC 11R1 oracle.jdbc.OracleConnection提供了创建Oracle对象的工厂方法。   包括ARRAY, BFILE, DATE, INTERVALDS, NUMBER, STRUCT, TIME,TIMESTAMP,TIMESTAMP等。   ojdbc5.jar: 适用于jdk5   ojdbc6.jar: 适用于jdk6   ***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样   ---------------------------------------------------   总体讲新版本的JDBC驱动 性能强、很多bug被发现并已解决。   我遇到的,之前使用ojdbc14.jar(不记得哪个版本了)批量插入10万条,实际只插入了3万多条,其它的丢失了,换ojdbc6.jar后,一次commit批量插入100万条也OK了。   尽量使用和数据库版本一致的驱动,有bug时,换高版本的JDBC驱动试试 。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值