时间格式转换String类型转换Timestamp类型并返回Timestamp
用户在前台页面输入String 类型的日期,格式为YYYY-MM-DD,去查询当天日期的国际汇款的报文信息。而数据存储的时间格式是Timestamp默认格式,明显的类型不匹配,需要类型转换。
用户输入的是年月日(YYYY-MM-DD)而数据库是(YYYY-MM-DD HH:MM:SS)java时间日期格式转换
用户不可能精确到时分秒去查询当然很不现实。
下面是类型转换的方法。
public final static Timestamp string2Time(String dateString)
ParseException {
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINESE);// 设定格式
dateFormat.setLenient(false);// 严格控制输入 比如2010-02-31,根本没有这一天 ,也会认为时间格式不对。
Date timeDate = dateFormat.parse(dateString);// util类型
Timestamp dateTime = new Time());// Timestamp类型,Time()返回一个long型
return dateTime;
}
public static void main(String[] args) throws ParseException {
String date="2010-05-31";
Timestamp timestamp = DateUtils.string2Time(date);
System.out.println(timestamp);
timestamp.Date()+1);
Timestamp lasttime = new Time());
System.out.println(lasttime);
// CommonUtils.TimeStamp2Date(timestamp);
// testSplit();
}
在这里返回了一个Timestamp对象。
我需要用timestamp .getTime()方法就可以得到用户输入转型后的时间 时,分,秒,肯定默认为 (00:00:00.0)
我们按照用户输入的时间去数据中匹配相对应的信息。
例如:用书输入:2010-05-31 ,转型后的时间 是2010-05-31 00:00:00.0 去数据库查肯定
不到想对应的信息。
这个时候我们怎么解决这个问题呢。
既然我们用此方法timestamp .geTime()可以得到转型后的时间。那么我们也可以得到它的相应的日期。
用此方法可以得到相应的日(也就是天数) timestamp .getDate()。
这时得到日期到底有和用意。接下来给大家仔细的介绍。
因为在数据库查询的时候我们需要用到时间的上限和下限。
什么是上限和下限呢?例如 用户输入 2010-05-31 当然查询的是 2010-05-31这一天范围之内的报文信息。
用户输入的是2010-05-31 转型后的时间是2010-05-31 00:00:00.0 这个条件就是所为下限时间。
而上限时间是什么呢,我们已经用timestamp .getDate()得到了日期(也就是天数)。
这时我们应该给日期进行加一,加一的目的就是得到上线。用户输入的时间进行转型后。我们用下限时间和上线时间去数据库进行匹配。这样就可以得到用户输入的时间内的报文信息。
上限时间是什么呢 ?我们需要用timestamp.Date()+1);设置上限时间,得到天数给天数加1 。
然后用Timestamp lasttime = new Time());
为什么不用Time()直接返回上限时间?
因为Time()返回的是一个long 类型的对象。与数据库的Timestamp不匹配。
Timestamp lasttime 去接受 Time()方法,这样做的目的是什么?
返回两个Timestamp 对象,传递给数据库进行查询的时候,我们只需要传递两个Timestamp对象。
这样做的目的是,我们在数据库中既然做不了处理 ,那我们只能在程序中进行控制。让它转
型。
有大牛肯定会说这真是个sb, 为什么不用数据库的函数 to_char 或者 to_timestamp 进行直接转型。
因为我们的数据库持久层的框架是公司内部自己写的 lettuce.在进行ping sql的时候有Bug .这是其一。
其二,因为多条件查询的时候本来数据库表的结构关系很复杂,在加上查询的条件比较多,用数据库提供的函数,这样查询对数据库的性能有所影响。成千上万条的信息,是不是数据库会承受不了呢?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论