Maison > Questions et réponses > le corps du texte
现在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
?。
其底层运行机制到底是什么原因呢?
高洛峰2017-04-18 10:56:42
Mysql convertira-t-il automatiquement les chaînes en datetime ?
Cela dépend si le leur datatype
est datetime
Ou peut-être que leur colonne dans mysql
a peut-être été réglée sur datetime
Vous pouvez appeler desc test;
pour voir
De plus, le format de 2017-01-15 00:00:00
lui-même est déjà datetime
.