찾다

 >  Q&A  >  본문

如何比较java中的Date与mysql中datetime类型的字段?

现在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_leeringa_lee2804일 전676

모든 응답(1)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 10:56:42

    mysql은 자동으로 문자열을 날짜/시간으로 변환합니까?

    테이블에 추가할 때 자신의 datatypedatetime

    인지 여부에 따라 다릅니다.

    또는 mysql의 열이 datetime

    으로 설정되었을 수도 있습니다.

    desc test;전화하여 보실 수 있습니다

    게다가 2017-01-15 00:00:00 자체의 형식도 이미 datetime입니다.

    회신하다
    0
  • 취소회신하다