1、java String与Date类型之间的相互转换
package
test;
import
java.text.DateFormat;
import
java.text.SimpleDateFormat;
import
java.text.ParseException;
import
java.util.Date;
public
class
StringOrDate {
public
static
String dateToString(Date date, String type) {
String str =
null
;
DateFormat format =
new
SimpleDateFormat(
"yyyy-MM-dd"
);
if
(type.equals(
"SHORT"
)) {
// 07-1-18
format = DateFormat.getDateInstance(DateFormat.SHORT);
str = format.format(date);
}
else
if
(type.equals(
"MEDIUM"
)) {
// 2007-1-18
format = DateFormat.getDateInstance(DateFormat.MEDIUM);
str = format.format(date);
}
else
if
(type.equals(
"FULL"
)) {
// 2007年1月18日 星期四
format = DateFormat.getDateInstance(DateFormat.FULL);
str = format.format(date);
}
return
str;
}
public
static
Date stringToDate(String str) {
DateFormat format =
new
SimpleDateFormat(
"yyyy-MM-dd"
);
Date date =
null
;
try
{
// Fri Feb 24 00:00:00 CST 2012
date = format.parse(str);
}
catch
(ParseException e) {
e.printStackTrace();
}
//以上这种转出来不能直接参与和数据库date的比较
// 2012-02-24
date = java.sql.Date.valueOf(str);
return
date;
}
public
static
void
main(String[] args) {
Date date =
new
Date();
System.out.println(StringOrDate.dateToString(date,
"MEDIUM"
));
String str =
"2012-2-24"
;
System.out.println(StringOrDate.stringToDate(str));
}
}
2、java.sql.Date.valueOf和java.sql.Timestamp.valueOf
要说明的是如果采用的是
java.sql.Date.valueOf,
比较的时候,如2012-05-09如果存在数据库的是datetiime会有2012-05-09 00:00:00以后的都不会被查询出来就是当天的查询不出来。要实现能查询出来则要使用
java.sql.Timestamp.valueOf
在开始时间写撑yyyy-mm-dd 00:00:00 截至时间写成yyyy-mm-dd 23:59:59就能查询到当天的了3、关于日期比较
如果一个时间段好像用.>/<=。时间区间貌似就不行了。时间区间的话在sql中用between记得时间要加引号
在hql中的话setDate记得里面的date用的是java.sql.date火车java.sql.timestamp
格式化Hibernate的SQL输出语句
今天在网上看到这么一段,很实用:
如果想要仔细看Hibernate生成的SQL语句,将format_sql设为true可以很大程度地减轻痛苦……
hibernate.format_sql = true
配置文件则加<property name="format_sql">true</property>
再加上这个的话:
hibernate.use_sql_comments = true
[可读性 + 可定位性]会更好
不过,这两个一起来的话也会造成SQL在console中显示的篇幅很大。