1

私は周りを見回しましたが、SOで具体的に尋ねられたものを見つけることができなかったようですが、この質問のような同様の質問、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 );

次の場合、クエリは「ハング」\しません\何も返されません:

  1. コメントなしの Timestamp オブジェクトを使用します (上記のとおり)。
  2. parameterSourceオブジェクトをDateTime.now().minusHours( 1 ).toGregorianCalendar()orに置き換えますDateTime.now().minusHours( 1 ).toGregorianCalendar().getTime()
  3. コメントアウトされた行を試しますが、タイプを次のように変更しますTimestamp

それで、ここに私の質問または質問があります...

SQL Server の日時列のクエリに関する既知のバグ\問題はありますか?

を使用する必要があるのはなぜTimeですかTimestamp?

オブジェクトを直接クエリすると、Spring が日付オブジェクトを に変換していると思われTimestampます (#2 で示したように)。

4

1 に答える 1