gpt4 book ai didi

java - sql server jdbc 查询日期时间列

转载 作者:行者123 更新时间:2023-12-01 05:09:40 30 4
gpt4 key购买 nike

我环顾四周,似乎找不到专门询问的问题,但我发现了类似的问题,如 this one还有很多关于 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()DateTime.now().minusHours( 1 ).toGregorianCalendar().getTime()
  3. 我尝试注释掉行,但将类型更改为 Timestamp

所以,这是我的一个或多个问题......

在 sql server 中查询日期时间列是否存在已知错误\问题?

为什么我必须使用Time而不是Timestamp

当我直接查询对象时,我怀疑 Spring 会将日期对象转换为 Timestamp(如#2 中所示)。

最佳答案

  1. TIMESTAMP 是服务器生成的值,用于帮助数据一致性,它不是简单的数据类型,因此用于存储日期时间值,避免使用 TIMESTAMP 数据类型。

  2. 此外,SQL Server TIMESTAMP 令人困惑,并且已弃用。它被ROWVERSION 关键字取代,这应该可以减少困惑。

关于java - sql server jdbc 查询日期时间列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202803/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com