在SQL查询中使用格式化字符串作为日期

时间:2014-04-10 10:04:50

标签: java mysql string hibernate date

在sql查询中输入日期之前,我格式化并将此日期转换为String,因为java.util.Date不起作用。

//create the date format
String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);

//convert the date to a String   
String dateString = sdf.format(Date);

然后我在我的java代码中使用sql查询中的datestring:

... +" and (t.actualEndDateTime > '" + dateString + "';

我知道java.sql.Date也是一个选项,但我只是想知道这是可以接受还是不好的做法?

我使用Hibernate 3.0连接到mySQL db。

1 个答案:

答案 0 :(得分:0)

您可以使用 MYSQL 语法执行此操作。检查此主题:MySQL: Compare date strings?

但至少有两个原因不推荐这样做:

  • 使用Hibernate,您应该更喜欢 HQL 以便您的应用 数据库不可知。
  • 为了进行比较,将Date转换为String是不必要的步骤(仅当您的日期在db中存储为字符串时)

Hibernate能够正确地将java.util.Date与数据库特定的日期类型进行比较