现在mysql数据库db有一张表test(id bigint,createTime datetime),部分表数据如下:
id | createTime |
---|---|
1 | 2017-01-02 10:34:33 |
2 | 2017-01-05 11:35:31 |
3 | 2017-01-07 13:20:01 |
4 | 2017-01-13 10:06:33 |
5 | 2017-01-15 11:22:53 |
6 | 2017-01-20 10:34:33 |
7 | 2017-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
?。
其底层运行机制到底是什么原因呢?
Ia bergantung kepada sama ada
apabila anda menambahkannya pada jadual.datatype
mereka sendiri ialahdatetime
Atau mungkin lajur mereka dalam
mysql
mungkin telah ditetapkan kepadadatetime
Anda boleh menghubungi
desc test;
untuk melihatSelain itu, format
2017-01-15 00:00:00
itu sendiri sudah pundatetime
.