[英]sql server jdbc query on datetime column
我環顧四周,並可能似乎無法找到這個特別要求,在左右,但我發現像類似的問題這一個關於SQL本身或C#以及大量的問題...
這是我所看到的:
MapSqlParameterSource parameterSource = new MapSqlParameterSource();
//parameterSource.addValue( "insertDate", DateTime.now().minusHours( 1 ).toGregorianCalendar(), Types.TIME );
parameterSource.addValue( "insertDate", new Timestamp( DateTime.now().minusHours( 1 ).getMillis() ) );
List< String > contents =
_simpleJdbcTemplate
.query(
"SELECT TOP (200) inserteddatetime, Contents FROM dbo.tsomeTable WHERE (ServiceName = 'something') and inserteddatetime > :insertDate",
new RowMapper< String >() {
@Override
public String mapRow( final ResultSet rs, final int rowNum ) throws SQLException {
System.out.println( rs.getTimestamp( "inserteddatetime" ) );
return rs.getString( "Contents" );
}
}, parameterSource );
查詢“掛起” \\不執行任何操作\\在以下情況下不會返回:
DateTime.now().minusHours( 1 ).toGregorianCalendar()
或DateTime.now().minusHours( 1 ).toGregorianCalendar().getTime()
替換parameterSource
對象 Timestamp
所以,這是我的一個或多個問題...
在SQL Server中的datetime列上進行查詢是否存在已知的bug \\問題?
為什么我必須使用Time
而不是Timestamp
?
我懷疑直接查詢對象時,Spring將日期對象轉換為Timestamp
(如#2所示)。
TIMESTAMP
是服務器生成的值,用於幫助實現data consistency
,它不是簡單的數據類型,因此為了storing datetime value
,請避免使用TIMESTAMP數據類型。
另外,SQL Server TIMESTAMP confusing
,並且deprecated
。 用ROWVERSION keyword
代替,它可以減少混亂。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.