如何比較java中的Date與mysql中datetime類型的欄位?
ringa_lee
ringa_lee 2017-04-18 10:54:42
0
1
724

現在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

全部回覆(1)
小葫芦

mysql會自動將字串轉換為datetime?

這要看你將它們加入表格的時候,它們本身的datatype是不是datetime

又或者是它們在mysql的column可能已經set成datetime

你可以打 desc test;查看

另外 2017-01-15 00:00:00 本身的格式已經是 datetime.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板