如何比较java中的Date与mysql中datetime类型的字段?
ringa_lee
ringa_lee 2017-04-18 10:54:42
0
1
679

现在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?。
其底层运行机制到底是什么原因呢?


ringa_lee
ringa_lee

ringa_lee

membalas semua(1)
小葫芦

Adakah mysql akan menukar rentetan secara automatik kepada datetime?

Ia bergantung kepada sama ada datatype mereka sendiri ialah datetime

apabila anda menambahkannya pada jadual.

Atau mungkin lajur mereka dalam mysql mungkin telah ditetapkan kepada datetime

Anda boleh menghubungi desc test; untuk melihat

Selain itu, format 2017-01-15 00:00:00 itu sendiri sudah pun datetime.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan