如何比較java中的Date與mysql中datetime類型的字段?
問題描述
現在mysql數據庫db有一張表test(id bigint,createTime datetime),部分表數據如下:
idcreateTime12017-01-02 10:34:3322017-01-05 11:35:3132017-01-07 13:20:0142017-01-13 10:06:3352017-01-15 11:22:5362017-01-20 10:34:3372017-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?。其底層運行機制到底是什么原因呢?
問題解答
回答1:mysql會自動將字符串轉化為datetime?
這要看你將它們加入表的時候,它們本身的datatype是不是datetime
又或者是它們在mysql的column可能已經set成datetime
你可以打 desc test;查看
另外 2017-01-15 00:00:00 本身的格式已經是 datetime.
相關文章:
1. javascript - JS如何取對稱范圍的隨機數?2. 數據庫 - mysql如何處理數據變化中的事務?3. java - ehcache緩存用的是虛擬機內存么?4. 關于docker下的nginx壓力測試5. java - mongodb分片集群下,count和聚合統計問題6. android - java 泛型不支持數組,那么RxJava的Map集合有什么方便的手段可以定義獲得一串共同父類集合數據呢?7. dockerfile - 我用docker build的時候出現下邊問題 麻煩幫我看一下8. 服務器端 - 采用nginx做web服務器,C++開發應用程序 出現拒絕連接請求?9. javascript - 有什么兼容性比較好的辦法來判斷瀏覽器窗口的類型?10. python - pandas按照列A和列B分組,將列C求平均數,怎樣才能生成一個列A,B,C的dataframe
