mysql datetime 类型与java.util.Date类型的值如何比较

mysql datetime 类型与java.util.Date类型的值如何比较?

比如:

java.util.Date now = new Date();
select from table where create_time > now;
// create_time 是 date或者datetime或者timestamp类型

这样的sql字符串应该怎拼写?用什么mysql的函数?

阅读 8.5k
4 个回答

传入日期字符串直接等值判断

手动JDBC拼装SQL的话:

select booking_time from me_orders where booking_time > '2016-11-19 09:29:11'; 

我试了下2016/11/19 09:29:1120161119092911貌似也可以,但还是建议表中形式是什么,你就用什么。

可以将Date转换为String,再用>比较,如下



String sql = "SELECT * FROM todo WHERE create_date > ? ";
PreparedStatement preStat = connection.prepareStatement(sql);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
preStat.setString(1, sdf.format(date));
ResultSet rs = preStat.executeQuery();

如果你是MyBatis框架,因为有TypeHandler的存在,Date类型可以直接写

select booking_time from me_orders where booking_time > #{param1,jdbcType=TIMESTAMP}

如果是字符串类型,你需要两边的日期格式一致,在Java层面格式化就可以

select booking_time from me_orders where booking_time > #{param1,jdbcType=VARCHAR}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题