jdk8時間類對應的sql server數據庫處理方式

 

1、直接使用jdk8的  java.time.LocalDateTime 作爲參數,傳入作爲日時間對象處理。

 

2019-05-19 11:20:39 [restartedMain] DEBUG [JsqlParserCountOptimize.java 59]-  JsqlParserCountOptimize sql=select * from  fm_forecast  where  TM BETWEEN  2019-05-19T11:20:29.233 AND 2019-05-12T11:20:29.233
2019-05-19 11:20:40 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- ==>  Preparing: SELECT COUNT(1) FROM ( select * from fm_forecast where TM BETWEEN 2019-05-19T11:20:29.233 AND 2019-05-12T11:20:29.233 ) TOTAL 
2019-05-19 11:20:40 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- ==> Parameters: 
2019-05-19 11:20:41 [restartedMain] ERROR [PaginationInterceptor.java 176]- Error: Method queryTotal execution error !
com.microsoft.sqlserver.jdbc.SQLServerException: 'T11:' 附近有語法錯誤。
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254) ~[mssql-jdbc-7.0.0.jre8.jar:?]

 

日期無法解析

 

2、使用java.util.Date 類作爲參數

 1、把localDateTime  轉爲date

  ZoneId zone = ZoneId.systemDefault();
		   Instant instant = timeStart.atZone(zone).toInstant();
		   Date dateStart = Date.from(instant);
2019-05-19 11:29:17 [restartedMain] DEBUG [JsqlParserCountOptimize.java 59]-  JsqlParserCountOptimize sql=select * from  fm_forecast  where  TM BETWEEN  Sun May 19 11:29:09 CST 2019 AND Sun May 12 11:29:09 CST 2019
2019-05-19 11:29:17 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- ==>  Preparing: SELECT COUNT(1) FROM ( select * from fm_forecast where TM BETWEEN Sun May 19 11:29:09 CST 2019 AND Sun May 12 11:29:09 CST 2019 ) TOTAL 
2019-05-19 11:29:17 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- ==> Parameters: 
2019-05-19 11:29:18 [restartedMain] ERROR [PaginationInterceptor.java 176]- Error: Method queryTotal execution error !
com.microsoft.sqlserver.jdbc.SQLServerException: 'May' 附近有語法錯誤。
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254) ~[mssql-jdbc-7.0.0.jre8.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608) ~[mssql-jdbc-7.0.0.jre8.jar:?]

 日期無法解析

 

 

3、使用string類型直接傳入後轉日期

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
		//處理成
		String   dateStart=timeStart.format(formatter) ;

傳入參數

  select * from  fm_forecast  where  TM BETWEEN  convert(datetime, '${timeStart}', 20)    AND       convert(datetime,'${timeEnd}', 20)

 

2019-05-19 11:52:02 [restartedMain] DEBUG [JsqlParserCountOptimize.java 59]-  JsqlParserCountOptimize sql=select * from  fm_forecast  where  TM BETWEEN  convert(datetime, '2019-05-12 11:51:44', 20)    AND       convert(datetime,'2019-05-19 11:51:44', 20)
2019-05-19 11:52:02 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- ==>  Preparing: SELECT COUNT(1) FROM fm_forecast WHERE TM BETWEEN convert(datetime, '2019-05-12 11:51:44', 20) AND convert(datetime, '2019-05-19 11:51:44', 20) 
2019-05-19 11:52:02 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- ==> Parameters: 
2019-05-19 11:52:04 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- ==>  Preparing: WITH query AS (SELECT TOP 100 PERCENT ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP) as __row_number__, * from fm_forecast where TM BETWEEN convert(datetime, '2019-05-12 11:51:44', 20) AND convert(datetime,'2019-05-19 11:51:44', 20)) SELECT * FROM query WHERE __row_number__ BETWEEN 1 AND 1000 ORDER BY __row_number__ 
2019-05-19 11:52:04 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- ==> Parameters: 
2019-05-19 11:52:05 [restartedMain] DEBUG [BaseJdbcLogger.java 159]- <==      Total: 9

成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章