如何比较java中的Date与mysql中datetime类型的字段?
问题描述
现在mysql数据库db有一张表test(id bigint,createTime datetime),部分表数据如下:
idcreateTime12017-01-02 10:34:3322017-01-05 11:35:3132017-01-07 13:20:0142017-01-13 10:06:3352017-01-15 11:22:5362017-01-20 10:34:3372017-01-25 10:46:25现在要通过java代码拼接sql字符串的形式查出所有创建时间在2017-01-15 00:00:00之后的数据。
限定 : 通过以下两种方式查询
第一种 :拼接字符串
String sql = 'select id,createTime from db.test where createTime > ' + javaCreateTime
第二种 : 预编译的形式传入查询参数:
String sql = 'select id,createTime from db.test where createTime > ?'
请问 : 第一种方式的javaCreateTime应该怎么传?第二种预编译的方式参数又应该怎么传?
从网上找到解决的办法了:
第一种传入:
String sql = 'select id,createTime from db.test where createTime > ’2017-01-15 00:00:00’ '
第二种
String sql = 'select id,createTime from db.test where createTime > ? ';PreparedStatement preStat = connection.prepareStatement(sql);preStat.setString(1, ’2017-01-15 00:00:00’);ResultSet rs = preStat.executeQuery();
以上两种方式都是直接传入字符串,而且都是yyyy-MM-dd HH:mm:ss。请问为什么可以达到目的?mysql会自动将字符串转化为datetime?。其底层运行机制到底是什么原因呢?
问题解答
回答1:mysql会自动将字符串转化为datetime?
這要看你將它們加入表的時候,它們本身的datatype是不是datetime
又或者是它們在mysql的column可能已經set成datetime
你可以打 desc test;查看
另外 2017-01-15 00:00:00 本身的格式已經是 datetime.
相关文章:
1. dockerfile - 我用docker build的时候出现下边问题 麻烦帮我看一下2. java - 做数据库向手机端的推送要系统地学习哪些知识?求大神指点,谢谢!3. java - C语言的一道算法题-兄弟郊游问题 求解?4. java - Android Studio编译打包Apk出现错误5. html - 开发android的调取我web页面 他之前用的是收费的浏览器包 显示是全的换了免费的浏览器包后 显示就不全 是什么原因啊6. java - jdbc无法连接postgresql数据库7. java - SpringMvc没有根据&符号截取参数8. mongodb的java开发中使用两个字段相等查询条件应该怎么写?9. java编程思想第4版中文版的几处谬误?10. 需要一个Java映射/表,其中多个键指向一个值。价值通常会改变
![dockerfile - 我用docker build的时候出现下边问题 麻烦帮我看一下](http://www.haobala.com/attached/image/news/202311/1028095cc6.png)